当前位置: 首页 > backend >正文

CSS高级技巧

精灵图

一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。

因此,为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度,出现了CSS精灵技术(也称CSS Sprites、CSS雪碧)。

核心原理:将网页中的一些小背景图像整合到一张大图中,然后通过 CSS 设置 background-position 属性显示需要的部分。这样服务器只需要一次请求就可以了。

CSS实现精灵图:

backgroud-img:精灵图路径;
background-repeat: 防止背景重复
background:精灵图的图标位置

精灵图是有诸多优点的,但是缺点很明显。

1.图片文件还是比较大的。

2.图片本身放大和缩小会失真。

3.一旦图片制作完毕想要更换非常复杂。

字体图标 iconfont

使用场景: 主要用于显示网页中通用、常用的一些小图标。

展示的是图标,本质属于字体。

优点:

轻量级:一个图标字体要比一系列的图像要小。一旦字体加载了,图标就会马上渲染出来,减少了服务器请求

灵活性:本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果、旋转等

兼容性:几乎支持所有的浏览器,请放心使用

1. 字体图标的下载

icomoon字库:SVG Icon Libraries and Custom Icon Font Organizer ❍ IcoMoonSVG Icon Libraries and Custom Icon Font Organizer ❍ IcoMoon

也可以进行图标选择

阿里iconfont字库: iconfont-阿里巴巴矢量图标库

2. 字体图标的引入

1. 把下载包里面的 fonts 文件夹放入页面根目录下

fonts 文件夹中有四种不同的字体,包含了主流浏览器支持的字体。

2. 在CSS 样式中全局声明字体,在 style.css 文件夹中

@font-face {font-family: 'icomoon';src:  url('fonts/icomoon.eot?3jjysb');src:  url('fonts/icomoon.eot?3jjysb#iefix') format('embedded-opentype'),url('fonts/icomoon.ttf?3jjysb') format('truetype'),url('fonts/icomoon.woff?3jjysb') format('woff'),url('fonts/icomoon.svg?3jjysb#icomoon') format('svg');font-weight: normal;font-style: normal;font-display: block;
}

3. 在demo.html 文件夹中复制我们需要的特殊字体符号

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>@font-face {/* 字体图标的类型名称 */font-family: 'icomoon';src: url('fonts/icomoon.eot?3jjysb');src: url('fonts/icomoon.eot?3jjysb#iefix') format('embedded-opentype'),url('fonts/icomoon.ttf?3jjysb') format('truetype'),url('fonts/icomoon.woff?3jjysb') format('woff'),url('fonts/icomoon.svg?3jjysb#icomoon') format('svg');font-weight: normal;font-style: normal;font-display: block;}p {/* 字体图标的类型名称 ,与@font-face中一致*/font-family: 'icomoon';/*改变字体图标的大小*/font-size: 100px;/*改变字体图标的颜色*/color: pink;}</style>
</head><body><!-- 字体图标的特殊符号 --><p></p>
</body></html>

3. 字体图标的追加

选择 selection.json 文件夹

点击yes

选择需要的图标之后重新进行下载,并替换之前的文件夹。

用户界面样式

鼠标样式 cursor

cursor 属性用于定义鼠标悬停在元素上的样式。

属性值说明
default小箭头(默认)
pointer小手  
move移动  
text文本 
not-allowed禁止  

轮廓线 outline

将表单的默认蓝色边框去掉

outline:0;
outline:none;

防止拖拽文本域resize                                                                      

实际开发中,我们文本域右下角是不可以拖拽的。

resize: none;

 vertical-align 属性应用

用于设置一个元素的垂直对齐方式,但是它只针对于行内元素或者行内块元素有效。

经常用于设置图片或者表单(行内块元素)和文字垂直对齐。

属性值说明
baseline将元素的基线对齐父容器的基线(默认)
bottom将元素的底部与父容器的底部对齐
middle将元素的中线与父容器的中线对齐
top将元素的顶部与父容器的顶部对齐
    <style>.a1 {background-color: palevioletred;margin-right: 20px;display:inline-block}img {width: 100px;height: 100px;}.b1{vertical-align: baseline;}.b2{vertical-align: bottom;}.b3{vertical-align: middle;}.b4{vertical-align:top;}</style>
<body><div class="a1"><img src="images/01.gif" class="b1">pppppppp</div><div class="a1"><img src="images/01.gif" class="b2">pppppppp</div><div class="a1"><img src="images/01.gif" class="b3">pppppppp</div><div class="a1"><img src="images/01.gif" class="b4">pppppppp</div>
</body>

行内块元素会和文字的基线对齐,导致图片底侧会有一个空白缝隙

主要解决方法有两种:

1.给图片添加vertical-align:middle | top| bottom等。(提倡使用的)

2.把图片转换为块级元素 display: block;

 溢出的文字省略号显示

1. 单行文本溢出显示省略号

            /*1.先强制一行内显示文本*/white-space: nowrap;  /* ( 默认 normal 自动换行) *//*2.超出的部分隐藏*/overflow: hidden;/*3.文字用省略号替代超出的部分*/text-overflow: ellipsis;
    <style>div {background-color: palegreen;width: 50px;}.a0 {background-color: palevioletred;}.a0 {/*1.先强制一行内显示文本*/white-space: nowrap;  /* ( 默认 normal 自动换行) *//*2.超出的部分隐藏*/overflow: hidden;/*3.文字用省略号替代超出的部分*/text-overflow: ellipsis;}</style>
<body><div>xxxxxxxxx</div><div class="a0">xxxxxxxxx</div>
</body>

2. 多行文本溢出显示省略号

多行文本溢出显示省略号,有较大兼容性问题,适合于webKit浏览器或移动端(移动端大部分是webkit内核)

overflow: hidden;text-overflow: ellipsis;/*弹性伸缩盒子模型显示*/display: -webkit-box;/*限制在一个块元素显示的文本的行数*/-webkit-line-clamp: 2;/*设置或检索伸缩盒对象的子元素的排列方式*/-webkit-box-orient: vertical;
    <style>div {width: 50px;height: 100px;background-color: bisque;/* 允许换行 */word-wrap: break-word;}.a {background-color: pink;}.a {overflow: hidden;text-overflow: ellipsis;/*弹性伸缩盒子模型显示*/display: -webkit-box;/*限制在一个块元素显示的文本的行数*/-webkit-line-clamp: 2;/*设置或检索伸缩盒对象的子元素的排列方式*/-webkit-box-orient: vertical;}</style>
<body><div>xxxxxxxxxxxxxxxxxxxxxxxxx</div><div class="a">xxxxxxxxxxxxxxxxxxxxxxxxx</div>
</body>

http://www.xdnf.cn/news/6844.html

相关文章:

  • 【MySQL】架构和存储引擎
  • 3D个人简历网站 5.天空、鸟、飞机
  • OpenCV 光流估计:从原理到实战
  • mysql中limit深度分页详细剖析【爽文】
  • 黑马点评-用户登录
  • 边缘计算:物联网的“加速器”与“守护者”
  • CentOS 上配置 Docker 使用 NVIDIA GPU
  • 【论文阅读】人脸修复(face restoration ) 不同先验代表算法整理2
  • Python标准库完全指南:os、sys与math模块详解与实战应用
  • DeepSeek指令微调与强化学习对齐:从SFT到RLHF
  • 【MySQL进阶】如何在ubuntu下安装MySQL数据库
  • React中useState中更新是同步的还是异步的?
  • 配置git从公网能访问-基于frp
  • Oracle 的 ASSM 表空间
  • 【论文阅读】人脸修复(face restoration ) 不同先验代表算法整理
  • 06、基础入门-SpringBoot-依赖管理特性
  • Linux之Nginx安装及配置原理篇(一)
  • 设计模式 - 单例模式 - Tips
  • 面试真题 - 高并发场景下Nginx如何优化
  • 开源安全大模型Foundation-Sec-8B实操
  • C语言_动态内存管理
  • 18.自动化生成知识图谱的多维度质量评估方法论
  • (9)python开发经验
  • NDS3211HV单路H.264/HEVC/HD视频编码器
  • math toolkit for real-time development读书笔记一三角函数快速计算(1)
  • Guided Filtering相关记录
  • 牛客网NC22222:超半的数
  • 登高架设作业人员的职业发展方向有哪些?
  • Lazada测评补单系统搭建指南:从环境到账号的要点把控
  • 深入解析Shell脚本编程:从基础到实战的全面指南