css - 子元素延伸过去的容器元素

标签 css element containers block

我想要的只是让第二个框中的按钮显示为 block 元素,以便它扩展以填充容器——但是当我将按钮元素设置为显示: block 时——它会溢出容器(父元素) , 请参阅以下内容:

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>

最佳答案

这是因为您将 .btn 上的宽度设置为 100%,并且您还有填充,这将在 100% 宽度的顶部添加填充。这会使 block 溢出父元素。

你要的是这个(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;
}

然后从 .btn_block 中删除 width:100%

编辑

这是一个更新的 jsfiddle

http://jsfiddle.net/932Fa/

关于css - 子元素延伸过去的容器元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19552709/

相关文章:

html - 使用 CSS 添加带有颜色叠加的 SVG

javascript - <audio> 元素上的 onclick 事件

kubernetes - 删除一个 kubernetes 节点的所有内容

c++ - 如何删除通用容器中的列表?

html - :before pseudo-element on container has a white border

java - 如何通过Java程序直接与Docker daemon交互(绕过终端)

html - 为什么 nth-of-type 不适用于包含在 a 标签中的图像?

css - 如何使用 CSS 创建不透明的底层?

Jquery:最小化 Accordion 标签点击标签内容

javascript - this.name 在 javascript 中返回 undefined