css - 带左、中、右 div 的顶部菜单

标签 css

为什么这段代码不设置两个 <input>元素的宽度为其父元素的 20%,即 #right 的 20% ,它本身应该只是菜单的右侧部分(而不是完整的浏览器宽度)?

* { margin:0; padding: 0; }
#menu { background-color: yellow; }
#left {background-color: green; float: left; width: 200px; }
#mid { background-color: red; float: left; width: 40%; }
#right {background-color: blue; width: calc(100%-40%-200px);}
#a1, #a2 { width: 20%; }
<div id="menu">
     <div id="left">left green: 200px</div> 
     <div id="mid">mid red: 40% of browser width</div> 
     <div id="right">
         <input id="a1" />
         <input id="a2" />
     </div>
</div>
<div>
content of the site
</div>

注意:#right 似乎使用整个浏览器宽度,而它的宽度应该为 100% - 40% - 200 像素。那么其中的 20% 将是 12%-40px,即我可以设置 #a1, #a2 { width: calc(12%-40px); } .但这将是一个肮脏的黑客。我真的很想根据其父级宽度设置 #a1 和 #a2 的宽度。

最佳答案

我在检查器中查看了您正在运行的代码,并注意到了这一点:

enter image description here

您需要在每个 calc 函数值之间使用空格。

calc(100% - 40% - 200px)

更新

您看到环绕发生的原因是您需要将 #right float 到左侧。

#right {
  ...
  float: left;
}

添加一条规则即可满足您的期望。

enter image description here

如果您注意到文本输入之间有一点间隙(图中未显示),请删除 HTML 中输入所在的空白区域。

做这个:

<input id="a1" />
<input id="a2" />

进入这个:

<input id="a1" /><input id="a2" />

* { margin:0; padding: 0; }
#menu { background-color: yellow; }
#left {background-color: green; float: left; width: 200px; }
#mid { background-color: red; float: left; width: 40%; }
#right { background-color: blue; width: calc(100% - 40% - 200px); float: left; }
#a1, #a2 { width: 20%; }
<div id="menu">
     <div id="left">left green: 200px</div> 
     <div id="mid">mid red: 40% of browser width</div> 
     <div id="right">
         <input id="a1" /><input id="a2" />
     </div>
</div>
<div>
content of the site
</div>

关于css - 带左、中、右 div 的顶部菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37221041/

相关文章:

html - 强调通过 CSS/JS 逐渐消失?

html - 如何为 <li> 元素添加带圆底 Angular 的 border-top?

html - Bootstrap 日期选择器显示

javascript - 根据用户用于浏览的设备(android tab、iphone、ipad)动态更改 zend 中的布局和模板

javascript - 如何删除以前的记录,问题是当我从下拉列表中选择城市时它会被连接起来?

css - 水平导航栏中的 ul li 元素右对齐和左对齐

css - 使用 CSS 设置多个 Div 的样式

html - 使列表项成为链接

css - 我可以去除 CSS 文件的所有内容吗?

css - 凹形边界半径是否可能?