Code前端首页关于Code前端联系我们

CSS3导航栏和磨砂玻璃效果学习教程

terry 2年前 (2023-09-27) 阅读数 49 #数据结构与算法

导航栏对于任何被围攻的网站来说都不陌生,但磨砂玻璃可就不常见了。简单地说,毛玻璃可以通过适当的方法使图像或背景变得模糊。该产品对用户的眼睛非常有效。

本节主题:使用CSS3制作类似下图的导航栏和磨砂玻璃效果。

导航栏呈梯形。

CSS3 制作导航条和毛玻璃效果学习教程

背景区域的冻结玻璃效果。

CSS3 制作导航条和毛玻璃效果学习教程

导航栏和毛玻璃效果分享在一篇文章里是有原因的。因为这两个成果的实现离不开一个重要的理念。

用文字描述一下:设置父元素的位置:relative,其伪元素(之后或之前)设置其位置:absolute,设置top、bottom、left、right为0,伪元素被占用。整个元素空间,最后设置 z-index 将背景放置在父元素后面。

特殊代码如下。

.container {
  position: relative;
}

.container::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
 z-index: -1;
}

这是什么意思?别担心,我将在接下来的两个实际示例中解释这段代码的含义。

文本结构:

1。导航栏

  1.1:平行四边形导航栏

  1.2:梯形导航栏

2。磨砂玻璃效果

3。结论

4.参考文章

1.导航栏

1.1:平行四边形导航栏

制作平行四边形的思路:为了生成平行四边形,我们使用CSS3 2D变形的skew()倾斜属性,因为我们只在水平方向倾斜,我们使用skew()时需要注意第二个参数为0,否则x和y方向会倾斜,这不是我们想要的结果。或者使用 skewX()。具体代码实现如下。

  • 博客园
  • 首页
  • 新文
  • 联系方式
  • 订阅
  • 在重要部分在这些大代码中。构造平行四边形时,需要考虑以下几点:

    1。设置相对于元素li,然后设置伪元素四个方向的absolute和LRBT的位置。原因是我们需要设置与li元素相关的伪元素,并让伪元素填充整个li元素的空间,从而使为伪元素设置的背景覆盖整个li元素。最重要的是,在伪元素上设置 skewX() 只会倾斜伪元素,而不会倾斜父元素的文本。

    2。设置 z 索引:-1。如果您没有在此处将 z-index 值设置为负值,您将看不到 li 元素中的文本。因为absolute会增加自身元素的level,所以伪元素的z-index应该是-1,所以level位于li元素之后。

    3。使用 skewX() 函数将伪元素(不是 li 元素)旋转 25 度。请务必键入字符后缀以避免浏览器兼容性问题。

    4。当伪元素和伪类一起使用时,必须先考虑伪类,然后考虑伪元素。如果像这样设置 li::after:hover 是没有效果的。正确的写法是:li:hover::after。

    样本结果如下。

    CSS3 制作导航条和毛玻璃效果学习教程

    CSS3 制作导航条和毛玻璃效果学习教程(旋转状态)

    1.2:楼梯导航栏

    楼梯导航栏实现思路:导航楼梯使用三个CSS3 3D变换属性:view(),rotateX()和change - background。

    perspective() 用于设置用户与元素 3D 空间的 Z 平面之间的距离。值越小,用户距离3D空间中的Z平面越近,视觉效果会越明显;反之,该值越大,用户距离3D空间的Z平面越近。 Z空间越远,视觉效果越小。

    rateX() 用于在 3D 空间中旋转 x 轴。你可以想象一下,你在高中学到的直角空间坐标系和旋转x轴是一样的。

    transform-origin 用于定义元素旋转中心点的位置。

    特殊属性的使用可以查看相关文档,这里不再讨论。特定的代码实现如下:

    • 博客garden
    • homePage
    • newnewessays
    • contact
    • subscriber

        在上面的代码中,仅显示重要的部分。注意以下问题:

      1。前四个问题在概念上与制作平行四边形导航栏类似。特别是,对伪元素设置perspective()和rotateX(),只会对伪元素进行3D处理并在空间中旋转X轴,不会对父元素文本进行处理。文本仍将按照默认结果显示。如果在父元素上设置perspective()和rotateX(),它们将影响后续的子元素。也就是说,所有子元素(包括文本)都将被旋转。文本是滚动的,导致阅读困难。这个逻辑应该不难理解。

      2。用于控制梯形向左倾斜还是向右倾斜的属性是变换的原点。梯形不倾斜:底部。左倾:左下;向右倾斜:右下角。

      示例结果如下:

      CSS3 制作导航条和毛玻璃效果学习教程

      CSS3 制作导航条和毛玻璃效果学习教程(反转状态)

      CSS3 制作导航条和毛玻璃效果学习教程(向左倾斜)

      CSS3 制作导航条和毛玻璃效果学习教程(向右倾斜)

      2.冷玻璃应用 ❀:冷玻璃使用 CSS3 中的背景-size,过滤器装配规则。

      background-size 属性用于指定背景图像的大小。标签的功能之一是扩展背景图像以适合整个容器。不过使用该功能的要求是需要设置足够大的图像,否则背景图像会失真。

      fiter滤波器中的blur()用于对图像进行高斯模糊处理。它只接受一个值。值越大,模糊效果越明显。

      在张新旭老师的冷玻璃应用文章中(参考文章中会提供链接),给出了冷玻璃应用的效果,但是有一个小问题:如果我们添加一篇背景图片。 、dim() 会将文本一起变暗,这会导致用户体验不佳。当然,在背景图不需要文字的情况下,张鑫旭大师的方案还是不错的。

      特殊代码如下:

      我的名字是Uncle-Keith!
      body {
        background: url("../images/family-one.jpg") no-repeat center center fixed;
        -moz-background-size: cover;
        -o-background-size: cover;
        -webkit-background-size: cover;
        background-size: cover;
      }
      
      .rascal {
        position: relative;
        background: rgba(255, 255, 255, 0.3);
        overflow: hidden;
      }
      .rascal::after {
        z-index: -1;
        content: '';
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        background: url("../images/family-one.jpg") no-repeat center center fixed;
        -moz-background-size: cover;
        -o-background-size: cover;
        -webkit-background-size: cover;
        background-size: cover;
        -webkit-filter: blur(20px);
        filter: blur(20px);
        margin: -30px;
      }

      在上面的代码中,有几个问题需要注意:

      1。同样,这里使用了相对父元素和绝对伪元素,并设置了TBLR和z-index。使用该方法的关键是对伪元素进行遮蔽(observation),这样不会影响父元素中文本的效果。

      2。您需要为背景图像添加背景尺寸属性。这是为了使图像适合屏幕的整个宽度。此外,该属性需要添加两次。一种是在 body 组件上,另一种是在伪组件上。将其添加到伪元素的原因是我们希望blur()能够处理与背景图像相同的模糊图像。如果你在伪组件中给背景设置了继承,那么它只会继承父容器,而流氓容器是一个白色背景的容器,所以结果和我们的不一样。下图展示了使用background:inherit;的磨砂玻璃效果。以伪单位表示。

      CSS3 制作导航条和毛玻璃效果学习教程

      这不是我们要找的磨砂玻璃效果。所以伪元素的背景纹理应该与背景图像相同。

      3。为伪元素设置正确的背景后,我们需要使用负边缘值来柔化边缘。

      CSS3 制作导航条和毛玻璃效果学习教程

      如你所见,磨砂玻璃上的blur()效果有点过分了。具有模糊效果的圆圈延伸到容器之外。溢出设置:对父元素隐藏可以剪切溢出部分。最后一个例子如下。

      CSS3 制作导航条和毛玻璃效果学习教程

      最终结果看起来很自然。

      3。结论

      这三个例子有一个共同的概念:将偏置、视图、旋转和CSS3效果过滤器设置为伪元素,并将相对父元素设置为伪元素。 ,所以伪元素的宽度和高度填充了父元素的整个区域,最后伪元素的z-index被设置为负值。这样做的好处是不会影响父容器中的文本。

      特殊代码如下:

      .container {
        position: relative;
      }
      
      .container::after {
        content: '';
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        top: 0;
       z-index: -1;
      }

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门