用填充"打破"DIV?

Pek*_*ica 1 html javascript css

如果我有一个100%宽的div元素,padding左边和右边有12个像素,我在div中有一个元素,我想从屏幕的一个角落到另一个角落(桥接12像素的间隙),我是否有机会在不使用绝对定位的情况下"突破"周围的div?

使用position:relative; left:-12px不会单独工作,因为div是100%宽,我不能指定"100%+ 12px"使内部元素触及右上角.

T. *_*one 5

纯CSS解决方案:

#breakout { margin-left: -12px; width: 100%; padding-left: 12px; padding-right: 12px; } 
Run Code Online (Sandbox Code Playgroud)

测试在FF 3.5和IE8中工作.其他浏览器未经过测试 使用IE7或之前可能会很奇怪.

我认为这是有效的原因是因为浏览器使用它的空白(填充)添加标签宽度.在这种情况下,margin-left: -12px将div移动到视觉上看起来它忽略了父级的padding: 12px.起初我认为width: 100%; padding-right: 12px;一个人会工作,但事实并非如此.我意识到这是因为正在使用的盒子模型.它没有考虑到初始填充因为它与父级的填充崩溃(或者我假设).

这里参考的是我的测试页面:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Hello</title>
    <style type="text/css">
        html, body { padding: 0; margin: 0; color: white; }
        #outer { padding: 12px; background-color: blue; }
        #breakout { background-color: red; margin-left: -12px; width: 100%; padding-right: 12px; padding-left: 12px; }
    </style>
</head>
<body>
    <div id="outer">
        <h3>Some content</h3>
        <div id="breakout">Breakout</div>
        <h3>More content</h3>
    </div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)