我有一个带侧导航的网站,我希望屏幕的其余部分充满图像,侧面导航离开左侧,宽度为150px。
理想情况下,我喜欢在width:100% -150px;
设置全屏图像,但我很确定这不是合适的CSS。
有没有办法达到同样的效果?我不能在宽屏幕上使用width:90%;
150px更像宽度的5%而不是10%。
答案 0 :(得分:4)
事实上 - 它是! (用css3)
width: calc(100% -150px);
width: -moz-calc(100% - 150px);
width: -webkit-calc(100% - 150px);
有效,但仅适用于最现代化的浏览器... caniuse
如果您不想使用此功能,可以使用保证金创建偏移量:margin-left:150px;
。但是,这需要一个宽度为100%的父元素,而您的图像需要一个块级元素(display:block
)。
另一种选择是使用box-sizing。这允许您选择另一个不计算边距和填充到元素宽度的盒子模型。这有助于一些典型的“我需要100%宽度 - Xpx边框”的情况。
答案 1 :(得分:3)
您可以使用calc()仅使用CSS3获得所需内容。
div{
width: 100%;
width: calc(100% - 150px);
width: -moz-calc(100% - 150px);
width: -webkit-calc(100% - 150px);
}
您可以看到example here
在IE9,Firefox和谷歌浏览器中运行良好。
答案 2 :(得分:2)
#content { margin-left:150px }
假设您的#content
项是display:block
元素,默认情况下会填充可用的宽度。
如果您希望单个图像填充宽度而不是平铺,则可以在现代浏览器上使用背景图像和background-size
:
#content {
background:url(myimage.jpg) no-repeat;
background-size:100% auto;
}
答案 3 :(得分:0)
对于非position:static
元素,您可以尝试设置right: 150px;
答案 4 :(得分:0)
您可以在#image-full div周围使用包装div来实现此目的:
#image-wrapper
{
position:absolute;
width:100%;
padding-right:150px;
}
#image-full
{
width:100%;
background-image:url(...);
/* ... */
}
#navigation
{
position:absolute;
width:150px;
}