0

I am trying to produce a responsive curtain effect like the one on this page: http://www.buildwindows.com/

The image is fixed to the top so that the content rolls over it when the user scrolls.

This seems easy if you know the height of the image, as you can just use margin-top on the content:

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;
}

However if you set the image to width: 100% so that it becomes responsive, the height scales up and down with the width of the browser, so the margin-top technique doesn't work. Can this effect be achieved solely with CSS, or is JavaScript required with a window resize listener?

4

2 回答 2

0

您可以通过将大图像设置为容器上的背景图像并为其赋予此 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>
于 2013-05-07T23:25:49.097 回答
0

你可以设置高度:

img {
  width: 100%;
  height: 300px; /*or whatever*/
}
于 2013-05-07T23:26:27.130 回答