我有一个带有侧面导航的网站,我希望屏幕的其余部分充满图像,侧面导航在左侧,宽度为 150 像素。
理想情况下,我喜欢将全屏图像设置为,width:100% -150px;
但我很确定这不是正确的 CSS。
有没有办法达到同样的效果?我不能width:90%;
在更宽的屏幕上使用 150px 更像是宽度的 5% 而不是 10%。
事实上 - 它是!(使用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 边框”的情况。
回应@BerkerYüceer 的评论 - 您还可以在计算中使用动态值,如下所示:
/* declare css variable */
--leftmargin:150px;
/* use the variable like following */
calc(100% - var(--leftmargin));
#content { margin-left:150px }
假设您的#content
项目是display:block
默认情况下将填充可用宽度的元素。
如果您想要单个图像来填充宽度,而不是平铺,您可以background-size
在现代浏览器上使用背景图像:
#content {
background:url(myimage.jpg) no-repeat;
background-size:100% auto;
}
对于非position:static
元素,您可以尝试设置right: 150px;
您可以在 #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;
}