html - CSS 的条件宽度

标签 html css

<div class="field">
  <label>Label</label>
  <input type="text" name="" value="">
</div>

<div class="field">
  <input type="text" name="" value="">
</div>

有什么方法可以根据标签有条件地设置输入宽度。所以如果标签存在:

.field label {
  width:25%;
}
.field input {
  width:75%;
}

其他:

.field input {
  width:100%;
}

我可以用 javascript 来做,但想知道它是否可以只用 CSS。

最佳答案

general sibling selector (~) 完全符合您的要求。它基本上仅在第一个元素之前选择第二个元素。

像这样尝试:

.field label {
  width:25%;
}

/* Default style */
.field input {
  width:100%;
}

/* If preceded by a label, input gets different style */
.field label ~ input {
  width:75%;
}
<div class="field">
  <label>Label</label>
  <input type="text" name="" value="">
</div>

<div class="field">
  <input type="text" name="" value="">
</div>

更新:刚刚意识到您还可以使用 adjacent sibling selector (+) 如果 label 保证紧接在输入之前。通用兄弟选择器 (~) 是 CSS3 的一部分,因此可能无法在不兼容的浏览器中工作,而相邻兄弟选择器 (+) 是 CSS2 的一部分。

关于html - CSS 的条件宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40297006/

相关文章:

javascript - 如何使用 HTML5 地理定位 javascript 初始化具有地理定位(用户当前位置)的 Google Maps API

html - 如何制作仅 CSS 的弹出窗口或工具提示?

HTML改变表单中输入框的高度

javascript - 弹出对话框在 10 秒后隐藏

CSS 列高度错误

css - Mediawiki 1.18 CSS 表格类。漏洞?

html - 如何在我的第一个标题之后更改标题和 div 之间的空白区域?

php - 将php文本框更改为按钮

javascript - 是否可以将文本标记为不可搜索?

html - 下载属性打开文件而不是下载