javascript - 响应式 CSS 图像窗帘效果

标签 javascript html css background responsive-design

我正在尝试制作响应式窗帘效果,如本页所示: http://www.buildwindows.com/

图像固定在顶部,因此当用户滚动时内容会滚动到它上面。

如果您知道图像的高度,这似乎很容易,因为您可以在内容上使用 margin-top:

fiddle :http://jsfiddle.net/k8NaV/

HTML:

<header>
    <img src="http://placehold.it/300x250/0000ff/ffffff" alt="" />
</header>

<article>
    <img src="http://placehold.it/300x1000/00ff00/ffffff" alt="" />
</article>

CSS:

header {
    position: fixed;
    top: 0;
}

article {
    position: relative;
    margin-top: 250px;
}

但是,如果将图像设置为 width: 100% 以使其响应,高度会随着浏览器的宽度上下缩放,因此 margin-top 技术不起作用。这种效果可以单独使用 CSS 实现,还是需要 JavaScript 和窗口调整大小监听器?

最佳答案

您可以通过将大图像设置为容器上的背景图像并为其提供以下 CSS3 属性/值来获得与此非常相似的效果(没有所有的复杂性):

background-size: cover;

虽然不完全一样,但是很不错。您可以在容器上设置 % 高度,但如果您不小心,这可能会导致内容溢出。

这是我的意思的粗略示例:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">

<style media="all">
html, body {height: 100%; margin:0; padding: 0;}
div {
height: 60%;
background-image: url(http://www.buildwindows.com/img/secret.jpg);
background-repeat: no-repeat;
background-size: cover;
}
</style>

</head>
<body>

<div></div>

</body>
</html>

还有很多响应式 JS 图片库以类似的方式运行,但鉴于您这里只有一张图片,我不确定我会走那条路。

编辑:这是另一个实验:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">

<style media="all">
html, body {height: 100%; margin:0; padding: 0;}
.banner {
min-height: 50%;
background-image: url(http://www.buildwindows.com/img/secret.jpg);
background-repeat: no-repeat;
background-size: cover;
color: white;
}
h1 {margin: 0 0 40px 0; font-size: 3em;}

.banner div, .content div {width: 60%; margin: 0 auto;}
</style>

</head>
<body>

<div class="banner">
    <div>
        <h1>nihil concursus bonorum omnium</h1>

        <p>Quo usque tandem abutere</p>

        <p>Catilina, patientia nostra? quam diu etiam furor iste tuus nos eludet?</p>

        <p>Tum denique interficiere, cum iam nemo tam inprobus, tam perditus, tam tui similis inveniri poterit, qui id non iure factum esse fateatur.</p>
    </div>
</div>

<div class="content">
    <div>
        <p>Quo usque tandem abutere, Catilina, patientia nostra? quam diu etiam furor iste tuus nos eludet? quem ad finem sese effrenata iactabit audacia? Nihilne te nocturnum praesidium Palati, nihil urbis vigiliae, nihil timor populi, nihil concursus bonorum omnium, nihil hic munitissimus habendi senatus locus, nihil horum ora voltusque moverunt?</p>

        <p>Patere tua consilia non sentis, constrictam iam horum omnium scientia teneri coniurationem tuam non vides? Quid proxima, quid superiore nocte egeris, ubi fueris, quos convocaveris, quid consilii ceperis, quem nostrum ignorare arbitraris? </p>

        <p>O tempora, o mores! Senatus haec intellegit. consul videt; hic tamen vivit. Vivit? immo vero etiam in senatum venit, fit publici consilii particeps, notat et designat oculis ad caedem unum quemque nostrum. Nos autem fortes viri satis facere rei publicae videmur, si istius furorem ac tela vitemus. Ad mortem te, Catilina, duci iussu consulis iam pridem oportebat, in te conferri pestem, quam tu in nos omnes iam diu machinaris.</p> 

        <p>An vero vir amplissumus, P. Scipio, pontifex maximus, Ti. Gracchum mediocriter labefactantem statum rei publicae privatus interfecit; Catilinam orbem terrae caede atque incendiis vastare cupientem nos consules perferemus? Nam illa nimis antiqua praetereo, quod C. Servilius Ahala Sp. Maelium novis rebus studentem manu sua occidit.</p>

        <p>Fuit, fuit ista quondam in hac re publica virtus, ut viri fortes acrioribus suppliciis civem perniciosum quam acerbissimum hostem coercerent.</p> 

        <p>Habemus senatus consultum in te, Catilina, vehemens et grave, non deest rei publicae consilium neque auctoritas huius ordinis; nos, nos, dico aperte, consules desumus.</p> 

        <p>Decrevit quondam senatus, ut L. Opimius consul videret, ne quid res publica detrimenti caperet; nox nulla intercessit; interfectus est propter quasdam seditionum suspiciones C. Gracchus, clarissimo patre, avo, maioribus, occisus est cum liberis M. Fulvius consularis.</p> 

        <p>Simili senatus consulto C. Mario et L. Valerio consulibus est permissa res publica; num unum diem postea L. Saturninum tribunum pl. et C. Servilium praetorem mors ac rei publicae poena remorata est? At vero nos vicesimum iam diem patimur hebescere aciem horum auctoritatis.</p>
    </div>
</div>

</body>
</html>

EDIT2:这是另一个提到更多窗帘效果的版本(也在下面的注释中链接):

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">

<style media="all">

body {
    margin:0; padding: 0;
    background-image: url(http://www.buildwindows.com/img/secret.jpg);
    background-repeat: no-repeat;
    background-size: 100%;
    background-color: #27485b;
    background-attachment: fixed;
    }

    h1 {margin: 0 0 40px 0; font-size: 3em;}

    .head div, .content div {width: 50%; margin: 0 auto;}

    .content {background: white;}

    .head {min-height: 500px; color: white;}

</style>

</head>
<body>

    <div class="wrapper">
        <div class="head">
            <div>
            <h1>nihil concursus bonorum omnium</h1>

            <p>Quo usque tandem abutere</p>

            <p>Catilina, patientia nostra? quam diu etiam furor iste tuus nos eludet?</p>

            <p>Catilina, patientia nostra? quam diu etiam furor iste tuus nos eludet?</p>

            <p>Catilina, patientia nostra? quam diu etiam furor iste tuus nos eludet?</p>

            </div>
        </div>

        <div class="content">
            <div>
            <p>Tum denique interficiere, cum iam nemo tam inprobus, tam perditus, tam tui similis inveniri poterit, qui id non iure factum esse fateatur.</p>
            <p>Quo usque tandem abutere, Catilina, patientia nostra? quam diu etiam furor iste tuus nos eludet? quem ad finem sese effrenata iactabit audacia? Nihilne te nocturnum praesidium Palati, nihil urbis vigiliae, nihil timor populi, nihil concursus bonorum omnium, nihil hic munitissimus habendi senatus locus, nihil horum ora voltusque moverunt?</p>

            <p>Patere tua consilia non sentis, constrictam iam horum omnium scientia teneri coniurationem tuam non vides? Quid proxima, quid superiore nocte egeris, ubi fueris, quos convocaveris, quid consilii ceperis, quem nostrum ignorare arbitraris? </p>

            <p>O tempora, o mores! Senatus haec intellegit. consul videt; hic tamen vivit. Vivit? immo vero etiam in senatum venit, fit publici consilii particeps, notat et designat oculis ad caedem unum quemque nostrum. Nos autem fortes viri satis facere rei publicae videmur, si istius furorem ac tela vitemus. Ad mortem te, Catilina, duci iussu consulis iam pridem oportebat, in te conferri pestem, quam tu in nos omnes iam diu machinaris.</p> 

            <p>An vero vir amplissumus, P. Scipio, pontifex maximus, Ti. Gracchum mediocriter labefactantem statum rei publicae privatus interfecit; Catilinam orbem terrae caede atque incendiis vastare cupientem nos consules perferemus? Nam illa nimis antiqua praetereo, quod C. Servilius Ahala Sp. Maelium novis rebus studentem manu sua occidit.</p>

            <p>Fuit, fuit ista quondam in hac re publica virtus, ut viri fortes acrioribus suppliciis civem perniciosum quam acerbissimum hostem coercerent.</p> 

            <p>Habemus senatus consultum in te, Catilina, vehemens et grave, non deest rei publicae consilium neque auctoritas huius ordinis; nos, nos, dico aperte, consules desumus.</p> 

            <p>Decrevit quondam senatus, ut L. Opimius consul videret, ne quid res publica detrimenti caperet; nox nulla intercessit; interfectus est propter quasdam seditionum suspiciones C. Gracchus, clarissimo patre, avo, maioribus, occisus est cum liberis M. Fulvius consularis.</p> 

            <p>Simili senatus consulto C. Mario et L. Valerio consulibus est permissa res publica; num unum diem postea L. Saturninum tribunum pl. et C. Servilium praetorem mors ac rei publicae poena remorata est? At vero nos vicesimum iam diem patimur hebescere aciem horum auctoritatis.</p>
            </div>
        </div>
    </div>


</body>
</html>

关于javascript - 响应式 CSS 图像窗帘效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16430178/

相关文章:

javascript - 复制-粘贴到javascript

javascript - 检查字符串的第一个字符是否为数字会报错,表明 charat 不是有效方法

html - 个别 <li> 背景和 CSS3 过渡有问题

javascript - 仅将 CSS 应用于文本内容

javascript - 将自定义 Js 添加到 Wordpress 主题

javascript - Sharepoint - 使用 CLI Webpack 的 Angular 2 应用程序

php - Html 表单提交复选框 - 更改 mysql 表中的值

javascript - Jquery 导航栏无法正常工作

javascript - 引用存储在 CSS Content 属性中的 JS 代码

html - 你是怎么做到这个效果的?