css文字背景蒙版
今天,我们将逐步采用一种非常酷的技术,您可以使用该技术来创建一种效果,该效果有点像视差滚动,但是不需要任何JavaScript; 可以通过纯CSS非常简单地实现。
首先查看现场演示 ,以了解要学习的内容(您需要在台式机/笔记本电脑上查看效果)。
该技术可用于创建出色的产品描述页面,甚至类似于Powerpoint / Keynote演示的内容,并且非常适合用于在线故事插图。
这是您的操作方式。
一切都在CSS中
这项技术的关键是CSS background-attachment: fixed;
,自CSS 2.1开始提供给我们。 应用了此样式的任何背景图像都将相对于窗口(而不是其所应用的元素)保持在固定位置。 我们将使用它来使插图保持在原处,而我们的内容将沿着它独立滚动。
此CSS属性需要注意的几件事是,由于背景图像将相对于窗口固定,因此它们的位置不会像常规背景图像那样受边距之类的东西影响。
您还应该知道,尽管该属性在所有台式机浏览器中都能很好地运行,但是它目前在Chrome移动版上不起作用,并且在其他移动浏览器上可能会有些生涩。 因此,尽管您的访问者仍然可以看到您的图像,但是滚动效果本身最好在桌面平台上查看。
怎么做的
实现您在演示中看到的基本步骤是:
- 创建一个容器元素并向其中添加内容。
- 将容器(在我们的情况下为
div
)设置为在宽度约50%的一侧具有填充物,因此将内容物推到另一侧。 - 添加背景图像(宽度也应为50%左右),并将其放置在内容的另一侧。
- 设置
background-attachment: fixed;
并观看滚动魔术!
让我们逐步了解所有这些情况。 您将要获取本教程的源文件 ,以便获得所需的图像。
1.基本设置
首先创建一个项目文件夹并向其中添加一个index.html文件以及一个CSS 文件夹,其中添加了名为style.css的文件。 将下载的源文件zip中的四个图像复制并粘贴到名为images的文件夹中。
将此HTML添加到index.html :
A Visual Demonstration of background-attachment: fixed;
Scroll Down and Watch What Happens
Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, `and what is the use of a book,' thought Alice `without pictures or conversation?'
So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy- chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.
There was nothing so very remarkable in that; nor did Alice think it so very much out of the way to hear the Rabbit say to itself, `Oh dear! Oh dear! I shall be late!' (when she thought it over afterwards, it occurred to her that she ought to have wondered at this, but at the time it all seemed quite natural); but when the Rabbit actually took a watch out of its waistcoat- pocket, and looked at it, and then hurried on, Alice started to her feet, for it flashed across her mind that she had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and burning with curiosity, she ran across the field after it, and fortunately was just in time to see it pop down a large rabbit-hole under the hedge.
In another moment down went Alice after it, never once considering how in the world she was to get out again.
The rabbit-hole went straight on like a tunnel for some way, and then dipped suddenly down, so suddenly that Alice had not a moment to think about stopping herself before she found herself falling down a very deep well.
Either the well was very deep, or she fell very slowly, for she had plenty of time as she went down to look about her and to wonder what was going to happen next. First, she tried to look down and make out what she was coming to, but it was too dark to see anything; then she looked at the sides of the well, and noticed that they were filled with cupboards and book-shelves; here and there she saw maps and pictures hung upon pegs. She took down a jar from one of the shelves as she passed; it was labelled `ORANGE MARMALADE', but to her great disappointment it was empty: she did not like to drop the jar for fear of killing somebody, so managed to put it into one of the cupboards as she fell past it.
`Well!' thought Alice to herself, `after such a fall as this, I shall think nothing of tumbling down stairs! How brave they'll all think me at home! Why, I wouldn't say anything about it, even if I fell off the top of the house!' (Which was very likely true.)
我们在这里要做的是设置基本HTML Shell,加载样式表和某些Google字体,然后创建将要应用此技术的第一个div内容容器。
div容器具有三个类:
-
.content
用于设置所有内容容器共有的一些属性。 -
.right
标识此容器应具有右对齐的内容(稍后我们还将使用左对齐的容器) -
.illustration_01
用于设置此容器的特定背景图像和颜色
造型
现在我们已经准备好一些CSS。 首先在您的style.css文件中添加一些基本的规范化和格式化代码:
* {
box-sizing: border-box;
}
html {
font-size: 1em;
font-family: 'Alike';
background-color: #262626;
color: #d9d9d9;
}
body {
margin: 0;
}
img {
max-width: 100%;
height: auto;
}
h1,h2,h3,h4,h5,h6 {
font-family: 'Roboto';
line-height: 1.313em;
}
h1 {
font-size: 3em;
margin: 0.563em 0;
}
h2 {
font-size: 2.25em;
margin: 0.625em 0;
}
h3 {
font-size: 1.5em;
margin: 1.313em 0;
}
h4 {
font-size: 1.313em;
margin: 1.313em 0;
}
h5 {
font-size: 1.125em;
margin: 1.313em 0;
}
h6 {
font-size: 1em;
margin: 0.75em 0;
}
现在是.content
类。 将此添加到样式表的底部:
.content {
font-size: 1.875rem;
color: #262626;
background-size: 49% auto;
background-attachment: fixed;
background-repeat: no-repeat;
}
此类是大多数魔术发生的地方。 对于文本,我们设置字体大小和颜色。 对于背景,您会看到我们首先将background-size
设置为49%自动。
这意味着背景图像将始终拉伸或缩小以填充页面宽度的49%,并且高度将按比例调整。 我们使用49%而不是50%的值,因为否则Firefox在屏幕中间显示出奇怪的线条。
然后,我们设置了background-fixed
,正如您从上面的描述中已经知道的那样,它使背景图像在滚动时保持原状,并使其相对于窗口而不是它所应用的容器定位。
最后,我们设置background-repeat: no-repeat;
以确保我们的图片仅在页面上显示一次。
接下来,将.right
类添加到样式表中:
.right {
padding: 1.618em 6.472em 3.236em 50%;
background-position: 0 50%;
}
最后一课将文本内容放在屏幕的一半,背景图像放在另一半。
background-position
设置告诉背景图像将其自身定位在窗口左侧的零像素位置,并将其自身从窗口顶部向下对齐一半。
最后,添加.illustration_01
类:
.illustration_01 {
background-color: #00c17b;
background-image: url("../images/minipadwhite.png");
}
这将设置我们想要用于此内容容器的特定背景图像和颜色。
查看您的网站,您现在应该看到以下内容:
向下滚动时,您应该会看到内容随图像一起滑动,而图像仍保持在原位置。
2.添加第二个容器
让我们添加另一个内容容器,该容器的内容向左对齐。
将此内容容器HTML添加到最后一个div下面:
Fixed Background Scrolling Effect
Down, down, down. Would the fall never come to an end! `I wonder how many miles I've fallen by this time?' she said aloud. `I must be getting somewhere near the centre of the earth. Let me see: that would be four thousand miles down , I think--' (for, you see, Alice had learnt several things of this sort in her lessons in the schoolroom, and though this was not a very good opportunity for showing off her knowledge, as there was no one to listen to her, still it was good practice to say it over) `--yes, that's about the right distance--but then I wonder what Latitude or Longitude I've got to?' (Alice had no idea what Latitude was, or Longitude either, but thought they were nice grand words to say .)
Presently she began again. `I wonder if I shall fall right through the earth! How funny it'll seem to come out among the people that walk with their heads downward! The Antipathies, I think--' (she was rather glad there was no one listening, this time, as it didn't sound at all the right word) `--but I shall have to ask them what the name of the country is, you know. Please, Ma' am, is this New Zealand or Australia?' (and she tried to curtsey as she spoke-- fancy curtseying as you're falling through the air! Do you think you could manage it?) `And what an ignorant little girl she'll think me for asking! No, it'll never do to ask: perhaps I shall see it written up somewhere.'
Down, down, down. There was nothing else to do, so Alice soon began talking again. `Dinah'll miss me very much to-night, I should think!' (Dinah was the cat .) `I hope they'll remember her saucer of milk at tea-time. Dinah my dear! I wish you were down here with me! There are no mice in the air, I'm afraid, but you might catch a bat, and that's very like a mouse, you know. But do cats eat bats, I wonder?' And here Alice began to get rather sleepy, and went on saying to herself, in a dreamy sort of way, `Do cats eat bats? Do cats eat bats?' and sometimes, `Do bats eat cats?' for, you see, as she couldn't answer either question, it didn't much matter which way she put it. She felt that she was dozing off, and had just begun to dream that she was walking hand in hand with Dinah, and saying to her very earnestly, `Now, Dinah, tell me the truth: did you ever eat a bat?' when suddenly, thump! thump! down she came upon a heap of sticks and dry leaves, and the fall was over.
Alice was not a bit hurt, and she jumped up on to her feet in a moment: she looked up, but it was all dark overhead; before her was another long passage, and the White Rabbit was still in sight, hurrying down it. There was not a moment to be lost: away went Alice like the wind, and was just in time to hear it say, as it turned a corner, `Oh my ears and whiskers, how late it's getting!' She was close behind it when she turned the corner, but the Rabbit was no longer to be seen: she found herself in a long, low hall, which was lit up by a row of lamps hanging from the roof.
There were doors all round the hall, but they were all locked; and when Alice had been all the way down one side and up the other, trying every door, she walked sadly down the middle, wondering how she was ever to get out again.
请注意,这次我们使用的是.left
而不是.right
类,并且我们增加了插图编号,因此将.illustration_01
类替换为.illustration_02
将以下两个新类添加到样式表中:
.left {
padding: 1.618em 50% 3.236em 6.472em;
background-position: 100% 50%;
}
.illustration_02 {
background-color: #e8697b;
background-image: url("../images/minipadblack.png");
}
这次,我们在容器的右侧应用了50%的填充,因此内容将被推到左侧,背景水平放置在100%的位置,即一直到右侧。 我们还为该容器的背景添加了不同的颜色和图像。
再次签出您的网站,然后开始向下滚动。 当您到达第一个容器的末尾时,您应该看到第二个容器开始出现,擦洗第一个图像的顶部并逐渐露出第二个图像。
3.插入分隔符
如果两个容器之间有分隔符,则可以增强此技术的效果,因此现在就添加它。
在两个容器div之间添加以下HTML:
Another Section Starts Here
并将.separator类添加到样式表中:
.separator {
font-size: 1.875rem;
padding: 1.618em 0;
text-align: center;
}
在刷新站点时,您现在应该在容器之间使用漂亮的分隔符:
4.第三和第四集装箱
现在,您可以输入其余分隔符和内容容器的代码。
将此HTML添加到现有div下方:
Another Section Starts Here
Great For Product Presentations
Suddenly she came upon a little three-legged table, all made of solid glass; there was nothing on it except a tiny golden key, and Alice's first thought was that it might belong to one of the doors of the hall; but, alas! either the locks were too large, or the key was too small, but at any rate it would not open any of them. However, on the second time round, she came upon a low curtain she had not noticed before, and behind it was a little door about fifteen inches high: she tried the little golden key in the lock, and to her great delight it fitted!
Alice opened the door and found that it led into a small passage, not much larger than a rat-hole: she knelt down and looked along the passage into the loveliest garden you ever saw. How she longed to get out of that dark hall, and wander about among those beds of bright flowers and those cool fountains, but she could not even get her head though the doorway; `and even if my head would go through,' thought poor Alice, `it would be of very little use without my shoulders. Oh, how I wish I could shut up like a telescope! I think I could, if I only know how to begin.' For, you see, so many out-of-the-way things had happened lately, that Alice had begun to think that very few things indeed were really impossible.
There seemed to be no use in waiting by the little door, so she went back to the table, half hoping she might find another key on it, or at any rate a book of rules for shutting people up like telescopes: this time she found a little bottle on it, (`which certainly was not here before,' said Alice,) and round the neck of the bottle was a paper label, with the words `DRINK ME' beautifully printed on it in large letters.
It was all very well to say `Drink me,' but the wise little Alice was not going to do that in a hurry. `No, I'll look first,' she said, `and see whether it's marked "poison" or not'; for she had read several nice little histories about children who had got burnt, and eaten up by wild beasts and other unpleasant things, all because they would not remember the simple rules their friends had taught them: such as, that a red-hot poker will burn you if you hold it too long; and that if you cut your finger very deeply with a knife, it usually bleeds; and she had never forgotten that, if you drink much from a bottle marked `poison,' it is almost certain to disagree with you, sooner or later.
However, this bottle was NOT marked `poison,' so Alice ventured to taste it, and finding it very nice, (it had, in fact, a sort of mixed flavour of cherry- tart, custard, pine-apple, roast turkey, toffee, and hot buttered toast,) she very soon finished it off.
Another Section Starts Here
Simple Technique Using Pure CSS
`What a curious feeling!' said Alice; `I must be shutting up like a telescope .'
And so it was indeed: she was now only ten inches high, and her face brightened up at the thought that she was now the right size for going though the little door into that lovely garden. First, however, she waited for a few minutes to see if she was going to shrink any further: she felt a little nervous about this; `for it might end, you know,' said Alice to herself, `in my going out altogether, like a candle. I wonder what I should be like then?' And she tried to fancy what the flame of a candle is like after the candle is blown out, for she could not remember ever having seen such a thing.
After a while, finding that nothing more happened, she decided on going into the garden at once; but, alas for poor Alice! when she got to the door, she found he had forgotten the little golden key, and when she went back to the table for it, she found she could not possibly reach it: she could see it quite plainly through the glass, and she tried her best to climb up one of the legs of the table, but it was too slippery; and when she had tired herself out with trying, the poor little thing sat down and cried.
`Come, there's no use in crying like that!' said Alice to herself, rather sharply; `I advise you to leave off this minute!' She generally gave herself very good advice, (though she very seldom followed it), and sometimes she scolded herself so severely as to bring tears into her eyes; and once she remembered trying to box her own ears for having cheated herself in a game of croquet she was playing against herself, for this curious child was very fond of pretending to be two people. `But it's no use now,' thought poor Alice, `to pretend to be two people! Why, there's hardly enough of me left to make ONE respectable person!'
Soon her eye fell on a little glass box that was lying under the table: she opened it, and found in it a very small cake, on which the words `EAT ME' were beautifully marked in currants. `Well, I'll eat it,' said Alice, `and if it makes me grow larger, I can reach the key; and if it makes me grow smaller, I can creep under the door; so either way I'll get into the garden, and I don't care which happens!'
She ate a little bit, and said anxiously to herself, `Which way? Which way?', holding her hand on the top of her head to feel which way it was growing, and she was quite surprised to find that she remained the same size: to be sure, this generally happens when one eats cake, but Alice had got so much into the way of expecting nothing but out-of-the-way things to happen, that it seemed quite dull and stupid for life to go on in the common way.
So she set to work, and very soon finished off the cake.
THE END
并将此CSS添加到样式表中:
.illustration_03 {
background-color: #14b29a;
background-image: url("../images/miniwhite.png");
}
.illustration_04 {
background-color: #80b9f1;
background-image: url("../images/miniblack.png");
}
现在,您应该将整个显示器放置在适当的位置,并显示第三和第四个内容容器:
以及最后的分隔符:
5.使其响应
您需要做的最后一件事是考虑屏幕尺寸的变化。 当视口变得太小而无法舒适地容纳我们的背景图像时,我们希望将其切换为嵌入式图像。
在每个内容容器的顶部,div开头和文本上方,添加一个带有.smallscreen
类的.smallscreen
并在其中放置img
标签以加载当前背景中使用的每个图像:
第一个内容容器:
第二内容容器:
第三个内容容器:
第四内容容器:
默认情况下,我们将使用.smallscreen
类隐藏此嵌入式图像,但是当屏幕尺寸较小时,将显示该图像。
将以下类添加到样式表中:
.smallscreen {
display: none;
}
现在,我们将添加将处理显示背景图像还是嵌入式图像的媒体查询。 它们还将逐步缩小文本的大小和布局中的间距,因此我们可以在所有视口宽度下很好地适应事物。
将这些媒体查询添加到样式表中:
@media (max-width: 106.25rem) {
.wrapper,
.separator {
font-size: 1.6875rem;
}
}
@media (max-width: 93.75rem) {
.content,
.separator {
font-size: 1.5rem;
}
.right {
padding: 1.618em 4.854em 1.618em 50%;
}
.left {
padding: 1.618em 50% 1.618em 4.854em;
}
}
@media (max-width: 81.25rem) {
.content,
.separator {
font-size: 1.3125rem;
}
.right {
padding: 1.618em 3.236em 1.618em 45%;
background-size: 44% auto;
background-position: 0 55%;
}
.left {
padding: 1.618em 45% 1.618em 3.236em;
background-size: 44% auto;
background-position: 100% 55%;
}
}
@media (max-width: 68.75rem) {
.content,
.separator {
font-size: 1.125rem;
}
.right {
padding: 1.618em 3.236em 1.618em 40%;
background-size: 39% auto;
background-position: 0 60%;
}
.left {
padding: 1.618em 40% 1.618em 3.236em;
background-size: 39% auto;
background-position: 100% 60%;
}
}
@media (max-width: 50rem) {
.smallscreen {
display: block;
}
.right {
padding: 1.618em 3.236em;
background-image: none;
}
.left {
padding: 1.618em 3.236em;
background-image: none;
}
}
@media (max-width: 31.25rem) {
.right {
padding: 1.618em 1.618em;
}
.left {
padding: 1.618em 1.618em;
}
}
@media (max-width: 12rem) {
html {
min-width: 12rem;
}
}
前四个媒体查询只是简单地减小文本字体大小,并逐渐减小内容容器中的填充以适应可用的屏幕宽度。
在第五个max-width: 50rem
媒体查询中,我们包含使.smallscreen
类可见的代码,从内容容器中删除50%的侧边距,并隐藏背景图像。 启动此媒体查询后,我们将不再看到大型的固定背景图像,而是将在每个内容容器的顶部看到常规图像。
现在,当您刷新站点时,您应该看到它与所有视口宽度一起平滑缩小,直到您看到其最小尺寸为止:
结论
即使在使用CSS这么多年之后,我也对使用它完成的令人敬畏的事情数量不断增加感到惊讶。 而且技术越简单,就越令人印象深刻。
试试这个小宝石,它是如此之快和容易,您可能会上瘾!
翻译自: https://webdesign.tutsplus.com/tutorials/create-a-masked-background-effect-with-css--cms-21112
css文字背景蒙版