簡體   English   中英

用填充“突破”DIV?

[英]“Break out” of DIV with padding?

如果我有一個 100% 寬的 div 元素,左邊和右邊有 12 個像素的padding ,並且我在 div 中有一個元素,我想從屏幕的一個角跨越到另一個(彌合 12 像素的間隙) ,我是否有機會在不使用絕對定位的情況下“突破”周圍的 div?

使用position:relative; left:-12px position:relative; left:-12px不能單獨工作,因為 div 是 100% 寬,我不能指定“100% + 12px”來使內部元素接觸到右手角。

純 CSS 解決方案:

#breakout { margin-left: -12px; width: 100%; padding-left: 12px; padding-right: 12px; } 

在 FF 3.5 和 IE8 中測試工作。 其他瀏覽器未測試。 使用 IE7 或更早版本可能會很奇怪。

我認為這樣做的原因是因為瀏覽器添加了帶有空白(填充)的標簽寬度。 在這種情況下, margin-left: -12px將 div 移動到視覺上看起來像是忽略了父級的padding: 12px 起初我以為width: 100%; padding-right: 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>

一個老問題,但對於那些谷歌搜索的人,您現在可以使用vw (設備屏幕寬度)和position:relative來實現這一點:

.wrapper_div{
margin: 0 auto;
width: 50%;
padding: 20px;
}

.breakout_div{
position: relative;
width: 100%; /*Fallback for older browsers*/
width: 100vw; /*Percentage of full screen viewing width*/
left: calc(-50vw + 50%); /*Centres div*/
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM