【问题标题】:CSS Background Cover - fixed and only half screen?CSS 背景封面 - 固定且只有半屏?
【发布时间】:2014-12-01 03:13:30
【问题描述】:

我正在尝试创建一个带有顶部菜单栏区域的布局,然后是具有固定和覆盖背景的拆分 75 / 25 屏幕。

--------------------------------------------------------
|                                                      |
--------------------------------------------------------
|                                      |               |
|                                      |               |
|                                      |               |
|                                      |               |
|                                      |               |
|                                      |               |
--------------------------------------------------------

左侧的主区域应该像任何正常页面一样在 y 方向滚动。

顶部菜单栏应与主要内容一起滚动。

但是右侧区域的区域需要有一个固定的背景,该背景可以缩放并覆盖整个区域(使用 CSS 封面属性),并且是固定的 - 所以它不会滚动,始终覆盖该区域,并且始终可见。

我可以同时做部分事情,但不能同时做所有事情!

我可以得到 75/25 分割,得到顶部栏和分割,或者得到一个覆盖和固定背景,但不能让所有东西一起工作!

忽略顶部栏,此代码适用于除 rhs 背景位置之外的所有内容。背景到位并固定,rhs 背景缩放和覆盖,但它不在块内的正确位置:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<style>
html {
height: 100%;
width: 100%;
}
body {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px;
}
.lhs {
width: 75%;
float: left;
background: url(lhs_bg.jpg) repeat left top;
}
.rhs {
width: 25%;
float: right;
background: url(rhs_bg_1.jpg) no-repeat left center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
</style>

</head>
<body>

<div class="lhs">

lhs

<br /><br /><br /><br /><br /><br />1
<br /><br /><br /><br /><br /><br />2
<br /><br /><br /><br /><br /><br />3
<br /><br /><br /><br /><br /><br />4
<br /><br /><br /><br /><br /><br />5
<br /><br /><br /><br /><br /><br />6
<br /><br /><br /><br /><br /><br />7
<br /><br /><br /><br /><br /><br />8
<br /><br /><br /><br /><br /><br />9
<br /><br /><br /><br /><br /><br />10
<br /><br /><br /><br /><br /><br />11

</div>
<div class="rhs">

rhs

<br /><br /><br /><br /><br /><br />1
<br /><br /><br /><br /><br /><br />2
<br /><br /><br /><br /><br /><br />3
<br /><br /><br /><br /><br /><br />4
<br /><br /><br /><br /><br /><br />5
<br /><br /><br /><br /><br /><br />6
<br /><br /><br /><br /><br /><br />7
<br /><br /><br /><br /><br /><br />8
<br /><br /><br /><br /><br /><br />9
<br /><br /><br /><br /><br /><br />10
<br /><br /><br /><br /><br /><br />11

</div>

</body>
</html>

数字只是用来显示内容滚动,并确保页面高于浏览器以强制它滚动。

我的猜测是背景图像的大小仍然覆盖全屏,而不是仅右侧区域的父 div 元素 - 因此您只能在 rhs 区域中看到完整图像的一部分,而不是完整图像。

有什么建议吗?!

【问题讨论】:

  • 没有人会从头开始编写它...请显示一些代码。
  • 很难在我尝试过的众多代码中仅添加一个 sn-p 代码,其中每个代码都做了一些事情,但没有其他事情!我现在已经在帖子中添加了一些代码。
  • 把你的代码放到 JSfiddle.net

标签: html css background fixed


【解决方案1】:

尝试在.rhs中添加代码

right: 0px;
position: fixed;

看看这是不是你想要的。或者您的意思是 rhs 内容也向上移动,但 rhs 背景保持不变?

如果是这种情况,那么只需为 rhs 添加另一个只有背景样式的 div。 Sample.

【讨论】:

    【解决方案2】:

    听起来您希望将背景固定在右侧 div 上,并在其上滚动内容?

    查看这篇文章: http://nicolasgallagher.com/flexible-css-cover-images/

    根据那篇文章,这是我所做的:

    <html>
    <head>
        <style>
        html {
        height: 100%;
        width: 100%;
        }
    
        body {
        margin: 0px auto;
        background-color:blue;
        }
    
        #menu{
        height:250px;
        background-color:green;
        }
    
        #container{
        position:relative;
        }
    
        #lhs {
        width: 75%;
        float:left;
        background: url(lhs_bg.jpg)repeat left top;
        }
    
        #rhs {
        width: 25%;
        float:right;
        background-image:url(rhs_bg.jpg);
        background-repeat:no-repeat;
        background-position:50%;
        background-size: cover;
        }
    </style>
    
    </head>
    
    <body>
    
    <div id = "menu"></div>
    <div id = "container">
        <div id = "lhs">
            lhs
        <br /><br /><br /><br /><br /><br />1
        <br /><br /><br /><br /><br /><br />2
        <br /><br /><br /><br /><br /><br />3
        <br /><br /><br /><br /><br /><br />4
        <br /><br /><br /><br /><br /><br />5
        <br /><br /><br /><br /><br /><br />6
        <br /><br /><br /><br /><br /><br />7
        <br /><br /><br /><br /><br /><br />8
        <br /><br /><br /><br /><br /><br />9
        <br /><br /><br /><br /><br /><br />10
        <br /><br /><br /><br /><br /><br />11
        </div>
    
        <div id="rhs">
            rhs
        <br /><br /><br /><br /><br /><br />1
        <br /><br /><br /><br /><br /><br />2
        <br /><br /><br /><br /><br /><br />3
        <br /><br /><br /><br /><br /><br />4
        <br /><br /><br /><br /><br /><br />5
        <br /><br /><br /><br /><br /><br />6
        <br /><br /><br /><br /><br /><br />7
        <br /><br /><br /><br /><br /><br />8
        <br /><br /><br /><br /><br /><br />9
        <br /><br /><br /><br /><br /><br />10
        <br /><br /><br /><br /><br /><br />11
    
    </div>
    </div>
    
    </body>
    </html>
    

    这使右侧 div 中的背景图像保持固定,但在右侧 div 中居中。

    【讨论】:

      【解决方案3】:

      你在寻找这样的东西吗?

      我用 #填充{ 最小高度:700px; } 使网站滚动。

      <head>
       <title>My Website</title>
       <style type='text/css'>
          body {
            background-color: #EEE0A7;
            margin:0px;
            min-width:1200px;
          }
          .container {
            text-align: center;
            display:block;
          }
          #rightbanner {
            background-color: orange;
            width: 25%;
            float: right;
            margin-top: 1em;
            margin-right: 2%;
            min-height:250px;
            padding:10px;
          }
          #content {
            position:relative;
            min-width:475px;
            background-color: orange;
            margin-left: 2%;
            margin-right: 30%;
            min-height:350px;
            margin-bottom:1em;
            margin-top:1em;
         }
         #filler {
            min-height:700px;
         }
         h2 {
           padding:0;
           margin:0;
           font-size:1.2em;
         }
         a {
           color:black;
           font-family: "Times New Roman", Georgia, Serif;
         }
         p {
           padding:0;
           margin:5px;
         }
        `.item {
           width:468px;
           margin:0 auto;
           padding: 0;
           border:gray solid 2px;
           border-radius:10px;
           }
         header {
           top:1em;
           margin-right:2%;
           margin-left:2%;
           background-color: orange;
           height: 3em;
           margin-top:1em;
         }
         h1 {
           margin-top:0;
         }
         }
         #search {
           display:none;
         }
         </style>
         </head>
         <body>
           <div class="container">
             <header>
               <a href="#"><h1>My Website</h1></a>
             </header>
             <div id="rightbanner">
               <div  id="search">
                 <b>Search Box:</b><br>
                  <form method="get" action="#">
                   <input type="text" id="search_input" name="search" placeholder="Search"   /><br>
                   <input type="submit" value="Search"/>
                 </form>
               </div>
               <b>MENU</b><br>
               <div id=navbar>
                 <a href='#'>Site 1</a><br><a href='#'>Site 2</a><br>      
               </div>
             </div>
             <div id="content"><br>
          <div class='item'>
               <h2><a href='#'>Test-Link!</a></h2>
               <audio  controls>
                  <source src=#' type='audio/wav' />
                 <source src='#' type='audio/mp3' />
               </audio>
               <p><b>From:</b><a target='_blank' href='https://www.youtube.com/'>Video XY</a></p>
               <p><h2><a href='download.php?id=1'>DOWNLOAD</a></h2></p>
             </div><br>
          <div class='item'>
               <h2><a href='#'>Link-Test-2!</a></h2>
         Here comes text
               <p><b>Aus:</b><a target='_blank' href='https://www.youtube.com/'>Video ABC</a></p>
               <p><h2><a href='download.php?id=2'>DOWNLOAD</a></h2></p>
             </div><br>
             <div id="filler">
             </div>
             </div>
           </div>
         </body>
      

      【讨论】:

        【解决方案4】:

        您是否正在努力实现这一目标? http://jsfiddle.net/oneeezy/kc4umn1c/1/

            /* Rows (clears floats) */
            .row:before, .row:after { content: " "; display: table; }
            .row:after { clear: both; }
            .row { *zoom: 1; clear: both; }
        
            .wrapper { margin: 4em auto 0; height: 100%; }
            header { background: black; position: fixed; top: 0; left: 0; right: 0; padding: 1em; color: white; }
            main { width: 75%; float: left; display: block; background: #f2f2f2; padding: 1em; }
            nav { width: 25%; float: left; display: block; background: yellow; padding: 1em; position: fixed; right: 0; top: 5em; }
            p { background: white; padding: 2em; margin: 1em 1em 2em; }
        

        【讨论】:

          猜你喜欢
          • 2014-05-27
          • 1970-01-01
          • 2015-03-10
          • 2019-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多