【问题标题】:CSS: gradient header 100% width of screen fine unless page scrollsCSS:渐变标题 100% 的屏幕宽度很好,除非页面滚动
【发布时间】:2023-03-19 02:07:02
【问题描述】:

我到处找这个,只能找到背景渐变的解决方案。

这个让我难住了,所以……就这样吧。

我有一个渐变标题。我希望它的宽度是屏幕的宽度。调整窗口大小时一切正常,除非滚动到侧面。然后我的渐变变成了空白。

内容需要保持较大的固定宽度。在我的实际页面的 HTML 中,标题包含在包装器和另一个 div 中。如果解决方案是 CSS 中的 HTML,那就太好了,但如果前者不可能,javascript 和 jquery 也可以。

我做了一个 js fiddle 来显示这个问题。 http://jsfiddle.net/WvHYM/18/

这是html

<body>
    <div id="wrapper">
        <div id="header">&nbsp</div>
        <div id="content">This is the content</div>
    </div>
</body>

和 css 它包含渐变,所以它是一个野兽

html, body{
    width:100%;
}

#wrapper{
    width:100%;
}
#header {
    height: 75px;
    width: 100%;
    background: #7d7e7d; /* Old browsers */ /* IE9 SVG, needs conditional override of 'filter' to 'none' */
    background: url(data:image/svg+xml;base64, PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPHJhZGlhbEdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iNzUlIj4KICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiM3ZDdlN2QiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMGUwZTBlIiBzdG9wLW9wYWNpdHk9IjEiLz4KICA8L3JhZGlhbEdyYWRpZW50PgogIDxyZWN0IHg9Ii01MCIgeT0iLTUwIiB3aWR0aD0iMTAxIiBoZWlnaHQ9IjEwMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
    background: -moz-radial-gradient(center, ellipse cover, #7d7e7d 0%, #0e0e0e 100%); /* FF3.6+ */
    background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #7d7e7d), color-stop(100%, #0e0e0e)); /* Chrome,Safari4+ */
    background: -webkit-radial-gradient(center, ellipse cover, #7d7e7d 0%, #0e0e0e 100%); /* Chrome10+,Safari5.1+ */
    background: -o-radial-gradient(center, ellipse cover, #7d7e7d 0%, #0e0e0e 100%); /* Opera 12+ */
    background: -ms-radial-gradient(center, ellipse cover, #7d7e7d 0%, #0e0e0e 100%); /* IE10+ */
    background: radial-gradient(ellipse at center, #7d7e7d 0%, #0e0e0e 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d', endColorstr='#0e0e0e', GradientType=1); /* IE6-8 fallback on horizontal gradient */
}
#content {
    width: 600px;
    height: 200px;
    background-color: #ccc;
    padding: 20px;
    font-family: Lucida Sans Unicode;
}

这里有一些问题的图片。

我们将不胜感激。 :)

【问题讨论】:

  • 嗯。看起来它链接到的实际图像有问题。这是一个仍然存在问题的小提琴。 jsfiddle.net/nt3vx

标签: javascript css header scroll gradient


【解决方案1】:

html

<body>
    <div class="wrapper"><div>&nbsp</div></div>
    <div>This is the content</div>
</body>

css

body{
    width:100%;
}
.wrapper {
    width:100%;
}
div:first-of-type {
    height:75px;
    width:100%;
    background: #7d7e7d;
    /* Old browsers */
    /* IE9 SVG, needs conditional override of 'filter' to 'none' */
    background: url(data:image/svg+xml;
    base64, PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPHJhZGlhbEdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iNzUlIj4KICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiM3ZDdlN2QiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMGUwZTBlIiBzdG9wLW9wYWNpdHk9IjEiLz4KICA8L3JhZGlhbEdyYWRpZW50PgogIDxyZWN0IHg9Ii01MCIgeT0iLTUwIiB3aWR0aD0iMTAxIiBoZWlnaHQ9IjEwMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
    background: -moz-radial-gradient(center, ellipse cover, #7d7e7d 0%, #0e0e0e 100%);
    /* FF3.6+ */
    background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #7d7e7d), color-stop(100%, #0e0e0e));
    /* Chrome,Safari4+ */
    background: -webkit-radial-gradient(center, ellipse cover, #7d7e7d 0%, #0e0e0e 100%);
    /* Chrome10+,Safari5.1+ */
    background: -o-radial-gradient(center, ellipse cover, #7d7e7d 0%, #0e0e0e 100%);
    /* Opera 12+ */
    background: -ms-radial-gradient(center, ellipse cover, #7d7e7d 0%, #0e0e0e 100%);
    /* IE10+ */
    background: radial-gradient(ellipse at center, #7d7e7d 0%, #0e0e0e 100%);
    /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d', endColorstr='#0e0e0e', GradientType=1);
    /* IE6-8 fallback on horizontal gradient */
}
div:last-of-type {
    width:600px;
    height:200px;
    background-color:#ccc;
    padding:20px;
    font-family:Lucida Sans Unicode;
}
}

DEMO

【讨论】:

  • 你的作品我试着复制它我错过了什么? jfiddle
  • 您好,看到您的问题,我知道如何解决也许,但我无法正确解释,因为我的英语太差了。
  • @John 请访问this 也许它有助于解决您的问题
【解决方案2】:

您的first-of-typelast-of-type 只对应&lt;p&gt; 标签。要解决此问题,您需要在另一个 &lt;div&gt; 中添加一个 &lt;div&gt;

试试这个:

<div id="header">

   <div id="header-gradient">

   //your content

   </div>

</div>

对于 CSS:

#header {
   width: 100%;
}

#header-gradient:first-of-type {
   //style here
}

#header-gradient:last-of-type {
   //style here
}

【讨论】:

  • 感谢您的评论,我现在更新了我的代码,改为使用 ID。 :)(所以我猜我可能会更正常)虽然你这么说很奇怪,因为它正在处理 first-of-type last-of-type 。 . .
  • 不是没有 id 就不行,更多的是你需要单独设置样式,当它们像这样嵌套时,你必须使它们独一无二。
  • 不抱歉还没有。我希望我能给你看问题的图片,我认为我描述得不是很好。主要问题是,当我缩小窗口并滚动时,我会在标题 div 的右侧看到空白。即使滚动,我也希望我的标题 div 为 100%。我不知道这是否可能只使用css。我实际的 html 和 css 不是 jfiddle 它只是显示了当我缩小窗口并向右滚动时遇到的相同问题。
  • 只有 CSS 是可能的。尝试在你的样式表中设置你的html, body: 100%
【解决方案3】:

我在这里找到了答案: How to make div not larger than its contents?

基本上,如果您想要一个 100% 宽度的父元素和动态固定宽度的子元素,您需要将父元素设置为显示内联块和自动宽度(这是默认值,这意味着宽度也可以完全省略。)

重要的 CSS

父母

#wrapper{
    display: inline-block;
}

孩子

#content {
    width:600px;
    height:200px;
    background-color:#ccc;
    padding:20px;
    font-family:Lucida Sans Unicode;
}

DEMO

【讨论】:

    猜你喜欢
    • 2012-08-14
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 2012-01-13
    • 2013-07-27
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多