css的一些小技巧!页面视觉差!

相当长的一段时间,现在网站与所谓的“视差”效果一直很受欢迎。 万一你没有听说过这种效果,不同的图像,在不同的方向移动或层主要包括。这导致了一个很好的光学效应,使参观者的注意。

在网页设计中,为了实现这是简单的一个网站添加一个jQuery插件的最常见的方式。这样做,不幸的是,有几个缺点。这些插件是将事件处理程序附加到滚动事件的窗口目标这导致了事件处理通过JavaScript吨(处理滚动事件可以很容易造成性能问题,应仔细考虑)。将上述层,图像背景的位置获得计算和设置为不同的元素,然后另外的原因很多DOM操作。

总之:视差用JavaScript可以减少一个网站的滚动性能很快。

background-attachment: fixed

什么只有很少人会知道,这种影响可以通过CSS,太。看看下面的例子:

See the Pen Parallax with background-attachment : fixed by Stefan Judis (@stefanjudis) on CodePen.

得到这个视差效果,背景图像被放置在不同的元素。这些元素需要另外定义background-attachment: fixed。通过定义background-attachment和任何背景图像的定位是可以改变的。

属性的初始值scroll基本上,这意味着图像的位置是固定的元素。没有任何花哨,而我们都知道这样的行为。在一个网站和元素用户滚动向上和向下等动做背景图像。

它变得有趣的设置background-attachment:fixedfixed的定义了背景图像的位置是不固定的依赖元素而固定到视口。这意味着图像会在视觉上相同的位置,无论怎么滚动会做。这导致了很好的视觉视差效应。

让我们在实际的实现快速检查:

<!-- Four containers for setting the background images -->
<div class="parallax">
  <div class="bg__foo">foo</div>
  <div class="bg__bar">bar</div>
  <div class="bg__baz">baz</div>
  <div class="bg__bazz">bazz</div>
</div>

// setting base styles to image containers
[class*="bg__"] {
  height: 50vh;

  text-indent: -9999px;

  /* fix background */
  background-attachment: fixed;

  /* center it */
  background-position: center center;

  /* Scale it nicely to the element */
  background-size: cover;

  /* just make it look a bit better ;) */
  &:nth-child(2n) {
    box-shadow: inset 0 0 1em #111;
  }
}

.bg__foo {
  background-image: url(
    https://s3-us-west-2.amazonaws.com/s.cdpn.io/30354/parallax1.jpg
  );
}

.bg__bar {
  background-image: url(
    https://s3-us-west-2.amazonaws.com/s.cdpn.io/30354/parallax2.jpg
  );
}

.bg__baz {
  background-image: url(
    https://s3-us-west-2.amazonaws.com/s.cdpn.io/30354/parallax3.jpg
  );
}

.bg__bazz {
  height: 100vh;

  background-image: url(
    https://s3-us-west-2.amazonaws.com/s.cdpn.io/30354/parallax1.jpg
  );
}

几乎全球兼容性。它已经在IE9和Android 2.1支持。

总结

我个人比较喜欢CSS解决JavaScript解决方案和这是我的偏好一个完美的例子。有没有逻辑,没有额外的DOM操作的需要,这使得整个解决方案,很好。但还是有一件事要记住当处理视差效应。

即使这个CSS的解决方案有很多事情要做。 background-attachment: fixed将导致更多的画,需要通过浏览器完成,这可能会影响性能和可能降低你的FPS滚动(记得60fps的目标吗?)。所以保持一个眼睛的FPS计在Chrome做这些事情时,总是一个好主意。

时间: 2024-12-14 09:34:15

css的一些小技巧!页面视觉差!的相关文章

平时遇见CSS的一些小技巧

清除浮动的三种方法 1.使用clear 样式清除 样例: .clear-float {clear:both;} clear 属性是 CSS 1 就提供的用来清除浮动的样式,设置了 clear 属性的元素,其上边框位置会紧贴浮动元素的 margin-bottom 边界位置渲染,忽略其 margin-top 设置.这样,父容器高度未设定(值是 auto)时,由于定义的清理浮动样式元素所在位置处于浮动元素之下,容器计算后的实际高度就包含了浮动元素. 2.使用伪元素:after 清除 样例:.after

原生JS和JQuery代码编写窗口捕捉函数和页面视觉差效果(scroll()、offsetTop、滚动监听的妙用)

想实现窗口滚动到一定位置时,部分网页的页面发生一些变化,但是手头没有合适的插件,所以就想到自己编写一个简易的方法, 想到这个方法要有很高的自由度和适应性,在这,就尽量的削减其功能,若有错误的地方或者更好的建议,请大家评论,一同探讨, 好了废话不多说,下面开始干活了! 首先,说一下我想实现的基本功能: 此方法需要有2个基本形参,,一个是我要监测的标签a,另一个是我要监测标签相对于哪个标签b做的距离检测. 当a和b的距离达到一定范围的时候,让网页局部发生一些变化效果,这是我们的预期. 以下是我的方法

CSS进阶之CSS的一些小技巧

如何设置水平居中? 分两种情况 行内元素与块级元素 1.行内元素(如图片 文字)    div.textcenter{    text-align:center;    }    <div class="textcenter">hello joe!</div> 2.块级元素 块级元素的水平居中又分为两种 定宽块状元素 和 非定宽块状元素 定宽块状元素(即块状元素的width值是定值): 可以通过块级元素的左右margin为auto来实现中 如下    div{

从零开始学习html(十五)css样式设置小技巧——下

六.垂直居中-父元素高度确定的单行文本 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>垂直居中</title> 6 <style> 7 8 .wrap h2{ 9 margin:0; 10 height:100px; 11 12 background:#ccc; 13 } 14 </style> 1

css样式设置小技巧

元素分为行内元素 还是 块状元素 ,块状元素里面又分为定宽块状元素,以及不定宽块状元素. 水平居中内容如下~ 一.行内元素:如果被设置元素为文本.图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的. 二.定宽块状元素:满足定宽和块状两个条件的元素是可以通过设置"左右margin"值为"auto"来实现居中的. margin:20px auto;/* margin-left 与 margin-right 设置为 auto */

html/css相关的小技巧(1)

1.a标签的链接顺序,link-visited-hover-focus-active. 2.marquee标签,我之前基本上没有用到过这个标签,在最近的面试中才知道这个标签的强大之处,他可以帮我们实现滚动在固定范围内的上下,左右滚动等效果.marquee有以下几个属性 (1)direction,控制滚动方向,属性值有left,right,up,down; (2)behavior,控制滚动方式,属性值有scroll连续滚动,slide只滚动一次,alternate往返滚动: (3)loop,控制循

HTML+CSS笔记 CSS中级 一些小技巧

水平居中 行内元素的水平居中 在实际工作中常会遇到需要设置水平居中场景,今天我们就来看看怎么设置水平居中的 如果被设置元素为文本.图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的. 语法: <body> <div class="txtCenter">我是文本,哈哈,我想要在父容器中水平居中显示.</div> </body> <style> div.txtCenter{ text-ali

从零开始学习html(十五)css样式设置小技巧——上

一.水平居中设置-行内元素 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>定宽块状元素水平居中</title> 6 <style> 7 div{ 8 border:1px solid red; 9 margin:20px; 10 } 11 .txtCenter{ 12 text-align:center; 13

css知识笔记(五)——css样式设置小技巧

水平居中设置-行内元素 如果被设置元素为文本.图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的.如下代码: html代码: <body> <div class="txtCenter">我是文本,哈哈,我想要在父容器中水平居中显示.</div> </body> css代码: <style> div.txtCenter{ text-align:center; } </style>