【问题标题】:Css to achieve {Width:100% -150px}css实现{Width:100% -150px}
【发布时间】:2012-06-21 15:43:41
【问题描述】:

我有一个带有侧边导航的网站,我希望屏幕的其余部分充满图像,侧边导航在左侧,宽度为 150 像素。

理想情况下,我喜欢将全屏图像设置为width:100% -150px;,但我很确定这不是正确的 CSS。

有没有办法达到同样的效果?我不能使用width:90%;,因为在更宽的屏幕上,150 像素更像是宽度的 5%,而不是 10%。

【问题讨论】:

标签: css height


【解决方案1】:

对于非position:static 元素,您可以尝试设置right: 150px;

【讨论】:

    【解决方案2】:

    事实上 - 它是! (使用 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));
    

    【讨论】:

    • 谢谢,如果 id 使用左侧边距方法执行此操作,我是否需要使用 z-index 将侧面导航置于图像上方?
    • @sam 看看 phrogz 演示,你不需要任何 zindex。
    • 你能做类似 calc(100% - margin-left) 的事情吗?假设 margin-left 是动态的...
    • @BerkerYüceer 你完全可以做到这一点!!使用预处理器(LESS/SASS)或原生 css 变量 - 我相应地编辑了我的答案。
    【解决方案3】:

    演示:http://jsfiddle.net/MY6Z9/

    #content { margin-left:150px }
    

    假设您的 #content 项目是一个 display:block 元素,默认情况下,它将填充可用宽度。


    如果您希望单个图像填充宽度,而不是平铺,您可以在现代浏览器上使用背景图像和 background-size

    #content {
      background:url(myimage.jpg) no-repeat;
      background-size:100% auto; 
    } 
    

    演示:http://jsfiddle.net/MY6Z9/5/

    【讨论】:

      【解决方案4】:

      您可以使用calc() 仅使用 CSS3 来获得您想要的。

      div{
      width: 100%;
      width: calc(100% - 150px);
      width: -moz-calc(100% - 150px);
      width: -webkit-calc(100% - 150px);
      }
      

      你可以看到example here

      在 IE9、Firefox 和 Google Chrome 中运行良好。

      其他参考:https://developer.mozilla.org/en/CSS/-moz-calc

      【讨论】:

        【解决方案5】:

        您可以在#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;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-04
          • 1970-01-01
          相关资源
          最近更新 更多