我想要的只是让第二个框中的按钮显示为块元素,以便它展开以填充容器 - 但是当我将按钮元素设置为display:block - 它会溢出容器(parent) ,请参阅以下内容:
http://jsfiddle.net/MgcDU/7747/
有什么想法吗?我错过了什么?
我的CSS:
a:link { color:#0040FF;text-decoration:none; }
a:visited { color:#0040FF; }
a:hover { background-color:#82B6EA;color:#FFFFFF;text-decoration:none; }
a:active { color:#0040FF; }
body { color:black;font-style:normal;font-size:10pt;font-family:Arial, Helvetica, sans-serif;padding:0;margin:0; }
.body_1 { margin-top:10px;margin-left:20px;margin-right:20px;margin-bottom:10px; }
.grid_1 { margin:8px 0 0 0;padding:0;overflow:hidden; }
.grid_1_left { float:left;width:240px;margin:0;padding:0; }
.grid_1_right { margin:0 0 0 245px;padding:0 0 0 8px; }
.grid_1_right_bld { margin:0 0 0 245px;padding:0 0 0 8px;border-left:2px #AAAAAA dotted; }
.btn, a.btn
{
background-color:#D3D7D7;color:#333333;display:inline-block;padding:6px 12px;margin-bottom:0;text-align:center;white-space:nowrap;vertical-align:middle;
cursor:pointer;border:1px solid transparent;border-color:#D3D7D7;
-webkit-transition:border-color 0.3s ease-out, background-color 0.3s ease-out;
-moz-transition:border-color 0.3s ease-out, background-color 0.3s ease-out;
transition:border-color 0.3s ease-out, background-color 0.3s ease-out;
}
.btn:hover,
.btn:focus,
.btn:active { background-color:#AEB1B1;color:#333333;border-color:#AEB1B1;text-decoration:none;outline:0; }
.btn_success, a.btn_success { color:#FFFFFF;border-color:#64b92a;background-color:#64b92a; }
.btn_success:hover,
.btn_success:focus,
.btn_success:active { color:#FFFFFF;border-color: #50a118;background-color:#50a118; }
.btn_lg { padding:8px 14px;font-size:12pt; }
.btn_block { display:block;margin:0;padding:0;width:100%; }
.box_1 { border:1px solid #5C6666;margin:0; }
.box_1_body { background-color:#FFFFFF;border-top:1px solid #5C6666;margin:0;padding:6px; }
.box_1_title { background-color:#5C6666;color:#FFFFFF;margin:0;padding:6px;text-align:center; }
我的HTML
<div class="body_1">
<div class="grid_1">
<div class="grid_1_left">
<div class="box_1">
<div class="box_1_title">Box 1</div>
<div class="box_1_body">
<a href="#" class="btn btn_success">Stays in the Box</a>
</div>
</div>
<br>
<div class="box_1">
<div class="box_1_title">Box 2</div>
<div class="box_1_body">
<a href="#" class="btn btn_success btn_block">Does NOT stay in the Box</a>
</div>
</div>
</div>
<div class="grid_1_right">
main body content
<br>
<a href="#" class="btn btn_success">Btn 1</a>
<a href="#" class="btn btn_success">Btn 2</a>
<br><br>
Note how the buttons can align without being stacked (ie: inline-block) must remain in .btn selector class
</div>
</div>
</div>
答案 0 :(得分:5)
这是因为您将.btn
上的宽度设置为100%并且还有填充,这将在100%宽度的顶部添加填充。这使得块溢出父元素。
您想要的是什么(display:inline-block;
已更改为display:block;
):
.btn,
a.btn {
background-color: #D3D7D7;
color: #333333;
display: block;
padding: 6px 12px;
margin-bottom: 0;
text-align: center;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
border: 1px solid transparent;
border-color: #D3D7D7;
-webkit-transition: border-color 0.3s ease-out, background-color 0.3s ease-out;
-moz-transition: border-color 0.3s ease-out, background-color 0.3s ease-out;
transition: border-color 0.3s ease-out, background-color 0.3s ease-out;
}
然后从width:100%
.btn_block
修改强>
这是一个更新的jsfiddle
答案 1 :(得分:3)
关于BOX-SIZING
CSS属性的全部内容。新标准对我来说似乎是违反直觉的。 Bootstrap和其他框架会将所有内容设置为{box-sizing: border-box;}
,但是当您放入自己的CSS时,这些天的默认值为{box-sizing: content-box;}
。
要么处理你的Paddings&amp;边界明确,或只是把
{box-sizing:border-box;}
在CSS的顶部,然后框将“表现”。
答案 2 :(得分:2)
问题解决了!!
添加以下内容以获得更高的CSS特性,一切正常。
.btn_block, a.btn_block { display:block;width:100%;padding-right:0;padding-left:0; }
请参阅更新的JSFiddle:http://jsfiddle.net/U8YhJ/1/