【Web前端HTML5CSS3】14-雪碧图与渐变

news/2024/11/23 3:58:45/

笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版

文章目录

  • 雪碧图与渐变
    • 1. 雪碧图
    • 2. 线性渐变
    • 3. 径向渐变

雪碧图与渐变

1. 雪碧图

解决图片闪烁的问题:

可以将多个小图片统一保存到一个大图片中,然后通过调整background-position来显示响应的图片

这样图片会同时加载到网页中就可以有效的避免出现闪烁的问题

这个技术在网页中应用十分广泛,被称为CSS-Sprite,这种图我们称为雪碧图

雪碧图的使用步骤:

  1. 先确定要使用的图标
  2. 测量图标的大小
  3. 根据测量结果创建一个元素
  4. 将雪碧图设置为元素的背景图片
  5. 设置一个偏移量以显示正确的图片

雪碧图的特点:

  • 一次性将多个图片加载进页面,降低请求的次数,加快访问速度,提升用户的体验

示例1

image-20210612230816217

a:link {display: block;width: 93px;height: 29px;background: url("assets/背景/练习2-背景/btn.png");/* 默认值,可以不设置 */background-position: 0 0;
}a:hover {/* 设置水平方向的一个偏移量;注意是向左移动,所以是负值 */background-position: -93px 0;
}a:active {/* 设置水平方向的一个偏移量;注意是向左移动,所以是负值 */background-position: calc(-93px*2) 0;
}

动画

我们对比以下之前练习中的效果,第一次加载进来的时候会有明显的闪烁

动画

示例2

image-20210612230929739

.box1 {width: 109px;height: 33px;background: url("assets/背景/练习3-雪碧图/amazon-sprite_.png");/* 设置水平和垂直方向的一个偏移量;注意移动方向 */background-position: -10px -10px;
}.box2 {width: 42px;height: 30px;background: url("assets/背景/练习3-雪碧图/amazon-sprite_.png");/* 设置水平和垂直方向的一个偏移量;注意移动方向 */background-position: -58px -338px;
}

image-20210612231316806

2. 线性渐变

通过渐变可以设置一些复杂的背景颜色,可以实现从一个颜色向其他颜色过渡的效果

!!渐变是图片,需要通过background-image来设置

线性渐变,颜色沿着一条直线发生变化 linear-gradient()

# 红色在开头,黄色在结尾,中间是过渡区域
background-image: linear-gradient(red, yellow);

image-20210612205407103

线性渐变的开头,我们可以指定一个渐变的方向

  • to left
  • to right
  • to bottom
  • to top
  • deg deg表示度数
  • turn 表示圈
background-image: linear-gradient(to left, red, yellow);
background-image: linear-gradient(to right, red, yellow);
background-image: linear-gradient(to top, red, yellow);
background-image: linear-gradient(to bottom, red, yellow);

上面基本的4个方向的渐变很好理解,我们就不再做过多的一一解释了

我们来看度数的渐变效果

background-image: linear-gradient(45deg, red, yellow);

image-20210612210437495

会发现它是从左下角往右上角去进行渐变的,为什么呢?

我们小时候肯定都用过量角器

image-20210612210854253

是不是恍然大悟,我们以原点作为起始点,有角度的那条边去做渐变,再把四象限的概念和矩形内部的四个角对应起来

总结:线性渐变的边上的某一点为起点,以一定角度渐变的;渐变方向的颜色是线性变化的,而其垂线方向的颜色是一致的

然后看下圈数的表示方法

background-image: linear-gradient(0.4turn, red, yellow);

因为圈数和角度之间可以相互转换,所以这里就不再进行赘述了

另外,渐变可以同时指定多个颜色,多个颜色默认情况下平均分布,也可以手动指定渐变的分布情况

repeating-linear-gradient() 可以平铺的线性渐变

background-image: repeating-linear-gradient(red, yellow);

image-20210612205909079

默认情况下,跟linear-gradient(red, yellow)效果一样,我们稍作改动

background-image: repeating-linear-gradient(red 0px, yellow 50px);

image-20210612210015129

由于我们设置的div宽高为200px,所以会有4次重复的渐变效果

所以默认情况下,下列几种写法是一致的,效果相同

background-image: linear-gradient(red, yellow);
background-image: repeating-linear-gradient(red, yellow);
/* 因为我们设置的div盒子的宽高为200px,所以这里[height]=200px */
background-image: repeating-linear-gradient(red 0, yellow [height]); 

3. 径向渐变

radial-gradient() 径向渐变(放射性的效果)

background-image: radial-gradient(red, yellow);

默认情况下,径向渐变的形状根据元素的形状来计算的

  • 正方形 --> 圆形

    image-20210612215139463

  • 长方形 --> 椭圆形

    image-20210612215228775

默认情况下,circleellipse是自动适配盒子的,我们也可以手动指定径向渐变的形状

形状

  • circle 圆形
  • ellipse椭圆
background-image: radial-gradient(circle, red, yellow);

image-20210612220320304

也可以指定渐变的位置

位置

  • top
  • right
  • left
  • center
  • bottom
background-image: radial-gradient(at left, red, yellow);

image-20210612220417179

当然,除了上述值,还可以指定像素

大小

  • closest-side 近边
  • farthest-side 远边
  • closest-corner 近角
  • farthest-corner 远角
background-image: radial-gradient(100px 60px, red, yellow);

image-20210612220547137

同时对其形状/大小和位置进行指定

radial-gradient(形状/大小 at 位置, 颜色 位置, 颜色 位置, 颜色 位置)

background-image: radial-gradient(circle at 50px 100px, red 50px, yellow 100px);

image-20210612221359657

总结一下

形状

  • circle 圆形
  • ellipse椭圆

大小

  • closest-side 近边
  • farthest-side 远边
  • closest-corner 近角
  • farthest-corner 远角

位置

  • top
  • right
  • left
  • center
  • bottom

类似于线性渐变,径向渐变也有对应的repeat属性

background-image: repeating-radial-gradient(circle at 50px 100px, red 50px, yellow 100px);

image-20210612221604176

总结:径向渐变的渐变方向以圆心为起点,往四周扩散的;同一半径上的颜色是渐变的,同一圆周上的颜色是一致的


http://www.ppmy.cn/news/406516.html

相关文章

CSS-Sprite(雪碧图)

CSS-Sprite (解决HTML图片闪烁问题) 1. 描述 图片属于网页中的外部资源,外部资源都需要浏览器单独发送请求加载,浏览器加载外部资源时是按需加载,用则加载,不用则不会加载。如果我们使用所需要的图片刚好…

html网页title旁边的小图标制作教程

这几天,为了解决title前边的小图标,忙了好一段时间,终于做出来了,虽然还不是很好,但还是很开心了。 你看,就是下边这样的图标。 那要怎样做呢?接下来让我为你慢慢道来。 1.首先,你…

css(雪碧图,渐变色,放射渐变)

一.雪碧图 解决图片闪烁问题,提高网站的性能,可以使用 雪碧图/精灵图 ,学名:图片整合技术 实现原理: 将多张图片整合在一起,然后一次性引入到网站中, 减少网络请求,以提高网站的性能 实现步骤&…

HTML-img图片标签

文章目录 img 图片标签1. 说明2. 属性3. 补充1. png24 图片问题2. 解决方法&#xff1a; img 图片标签 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>图片标签</title></head><body><img src&qu…

CSS - 背景图片

使用<body>标签使用一般标签进行拓展至整个页面 <!DOCTYPE html> <html xmlns"http://www.w3.org/1999/xhtml" lang"zh"><head><meta http-equiv"content-type" content"text/html; charsetUTF-8"><…

怎么形容智能冰激凌机器人_有关于形容描写冰激凌的句子及图片

1、我拿出冰淇淋&#xff0c;隐隐约约的看见淡黄的雪梨果肉和黑乎乎的巧克力豆。嗯&#xff0c;牛奶的香醇中又夹杂着雪梨的清甜和巧克力的浓香&#xff0c;味道好极了。 2、冰淇淋上面有各种各样颜色&#xff0c;有红的、黄的、紫的……真像一个八宝饭。 3、冰淇淋的形状看上去…

背景图片的标签

1. background-image:设置元素的背景图片 url("图片路径") 注意&#xff1a; 当图片比较小时&#xff0c;默认会以平铺的方式铺满整个背景区域。 平铺&#xff1a; 图片会在水平和垂直俩个方向上重复出现&#xff0c;直至背景区域填充完整。 代码如下; 2.background-…

垃圾分类数据集-8w张图片245个类附赠tensorflow代码

课程设计要做一个垃圾分类系统&#xff0c;需要识别可回收垃圾、厨余垃圾、有害垃圾和其他垃圾等四个大类&#xff0c;在网上找到了很多开源的数据集&#xff0c;但是质量参差不齐&#xff0c;而且有坏图的存在&#xff0c;所以我就将这些数据集还有自己爬取的数据一起清洗了一…