CSS:高级寄巧

精灵图

为什么需要精灵图呢?

4fcbf07b257b40be97eec8882f6905be.png

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

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

核心原理:将网页中的一些小背景图像整合到一张大图中 ,这样服务器只需要一次请求就可以了

f13ef6cd14f54169bce1aef03bd13464.pngc927faf853324fd79dbb16ce89dc4d33.png

这是王者和淘宝的精灵图

使用精灵图的核心:

00e5fb9daa9a4a66b73f8951129d248f.png

1. 精灵图主要针对于小的背景图片使用。

2. 主要借助于背景位置来实现---background-position 。

3. 一般情况下精灵图都是负值。(千万注意网页中的坐标: x轴右边走是正值,左边走是负值, y轴同理。)

<!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>.box{width: 60px;height: 60px;margin: 100px auto;background:url(./IMG王者3d.png);background-position: -182px 0;}</style>
</head>
<body><div class="box"></div>
</body>
</html>

91a360e173b44e99a0edda2253b5d641.png 

字体图标

字体图标使用场景:网页中通用的小图标

精灵图有很多优点,但是也有很多缺点:

1.图片文件比较大

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

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

此时就有一种技术的出现很好的解决了以上的问题:字体图标inconfont

字体图标可以为前端工程师提供方便高效的图标使用方式,展示的是图标,本质是字体

字体图标优点:

27d67f07b96842df89b4fc320ab76282.png

所以简单就用字体图标

复杂就用精灵图

字体图标是网页常见的图标,直接网上下载即可e21e0735f1ac4468abfbd70a55f54e78.png

1.字体图标的下载

2.字体图标的引入(到html页面中)

3.字体图标的追加(以后添加新的小图标)

字体图标下载推荐网站:

http://icomoon.iohttp://www.iconfont.cn/

第一个是外网要挂梯子

页面长这样:

 8a02302ac48040368cd49c73ebbea612.png

选择完点右下角打包下载到本地

再解压 有很多种样式可供选择

299a0a34ebcf40ec83896b874eb98aae.png

 引入就需要把下载包里面的fonts文件夹放到页面根目录下

91c68cfe2b3e4d618c464bed90521d0b.png

字体图标可爱捏:

64b64d1ba9ce496783775f7aa5e8ee2d.png

<!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?b7s6ss');src: url('fonts/icomoon.eot?b7s6ss#iefix') format('embedded-opentype'),url('fonts/icomoon.ttf?b7s6ss') format('truetype'),url('fonts/icomoon.woff?b7s6ss') format('woff'),url('fonts/icomoon.svg?b7s6ss#icomoon') format('svg');font-weight: normal;font-style: normal;font-display: block;}span{font-size: 100px;color: black;font-family: 'icomoon';}p{font-size: 100px;color: rgb(13, 148, 13);font-family: 'icomoon'; }</style>
</head><body><span></span><p></p>
</body></html>

11b56c8ae667412dafa9d61db89485df.png

如果之后要新增,点上面那个选择文件:

c0e26824548045e1a7febc2b77212790.png

 560ee27b10764985a727468b76f88731.png

这样就可以新增了 

字体图标加载原理:

1cf634c10ba1437da486cfe5eaba7d80.png

CSS三角

网页中常见一些三角形,使用 CSS 直接画出来就可以,不必做成图片或者字体图标

8edf41e123c546c1a2c352f9f841f42e.png

<!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>div { width: 0; height: 0; line-height: 0; font-size: 0; border: 50px solid transparent; border-left-color: pink; } </style>
</head>
<body><div></div>
</body>
</html>

 f84d9d3e76354559b45297275f136687.png

CSS用户界面样式

所谓的界面样式,就是更改一些用户的操作样式,以便提高更好的用户体验

更改用户的鼠标样式

li {cursor: pointer; } 

这是语法,可以设置或检索在对象上移动的鼠标指针采取何种系统预定义的光标形状

 8808961b404e4971a473d1eaae75634a.png

表单轮廓

给表单添加 outline: 0; 或者 outline: none; 样式之后,就可以去掉默认的蓝色边框。

input {outline: none; } 

防止表单域拖拽

在实际开发中,文本域右下角是不可以拖拽的:

textarea{ resize: none;} 

vertical-align属性应用

CSS 的 vertical-align 属性使用场景: 经常用于设置图片或者表单(行内块元素)和文字垂直对齐

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

语法:

vertical-align : baseline | top | middle | bottom 

00c9b35e52f8475c8d07436c3133a039.png 

ea0a0846ccf44c719f1b80c3a1f864f1.png 

图片、表单都属于行内块元素,默认的 vertical-align 是基线对齐。 

d6d11081522b4c39b00f88269e87291b.png

vertical-align可以解决图片底部默认空白缝隙问题

bug:图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐。

主要解决方法有两种:

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

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

add4380f509046efbc4ba67fb3c8beaf.png 

3e0d6ef2de554803aba6845d5b26b72d.png

溢出的文字省略号显示

单行文本溢出显示省略号:

99f70dceef7a4626bac59e00d3430d21.png

多行文本溢出显示省略号:

533b6a7062e94963ad96ad73bf3fef50.png

单行文本溢出显示省略号必须满足三个条件:

/*1. 先强制一行内显示文本*/ white-space: nowrap; ( 默认 normal 自动换行) /*2. 超出的部分隐藏*/ overflow: hidden; /*3. 文字用省略号替代超出的部分*/ text-overflow: ellipsis; 
<!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>div { width: 100px;height: 80px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;background-color: cadetblue;} </style>
</head>
<body><div>西安邮电你是杀不死我的哈哈哈哈哈哈哈哈</div>
</body>
</html>

a3644a3844f247928e8a61f117b021ce.png

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

overflow: hidden; 
text-overflow: ellipsis; 
/* 弹性伸缩盒子模型显示 */ 
display: -webkit-box; 
/* 限制在一个块元素显示的文本的行数 */ 
-webkit-line-clamp: 2; 
/* 设置或检索伸缩盒对象的子元素的排列方式 */ 
-webkit-box-orient: vertical; 
<!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>div {width: 100px;height: 43px;overflow: hidden;text-overflow: ellipsis;/* 弹性伸缩盒子模型显示 */display: -webkit-box;/* 限制在一个块元素显示的文本的行数 */-webkit-line-clamp: 2;/* 设置或检索伸缩盒对象的子元素的排列方式 */-webkit-box-orient: vertical;background-color: cadetblue;}</style>
</head><body><div>西安邮电你是杀不死我的哈哈哈哈哈哈哈哈</div>
</body></html>

 4498b74ca3994556948cdd77c59a0826.png

更推荐让后台人员来做这个效果,因为后台人员可以设置显示多少个字,操作更简单。

又有我们的事了么

我补药

 有一些东西可以帮我们进行技术更快更好的布局

常见布局寄巧

margin负值的运用

9b23b64656c64417a0ad5da81db08cb4.png

这是为了让1+1=1

 d956cec10b6c4c2381ad9d0e47d50383.png

1.让每个盒子margin 往左侧移动 -1px 正好压住相邻盒子边框

2.鼠标经过某个盒子的时候,提高当前盒子的层级即可(如果没有有定位,则加相对定位(保留位置),如果有定位,则加z-index)

文字围绕浮动元素

b67043edb5c54d369b6b4fd23e407688.png

文字围绕浮动元素就是在巧妙运用浮动元素不会压住文字的特性

行内块的巧妙运用

8671392c739f4f649011454826f19b43.png

页码在页面的中间显示:

1. 把这些链接盒子转换为行内块, 之后给父级指定 text-align:center

2. 利用行内块元素中间有缝隙,并且给父级添加 text-align:center; 行内块元素会水平会居中

<!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>*{margin: 0;padding: 0;}.box{text-align: center;}.box a{display: inline-block;width: 36px;height: 36px;background-color: #f7f7f7;border: 1px solid #ccc;text-align: center;line-height: 36px;text-decoration: none;color: #333;font-size: 16px;}.box .prev,.box .next{width: 85px;}.box .current,.box .elp{border: 0;background-color: white;}.box input{height: 36px;width: 45px;border: 1px solid #ccc;outline: none;}.box button{width: 60px;height: 36px;background-color: #f7f7f7;border: 1px solid #ccc;}</style>
</head>
<body><div class="box"><a href="#" class="prev">&lt;&lt;上一页</a><a href="#">1</a><a href="#" class="current">2</a><a href="#">3</a><a href="#">4</a><a href="#">5</a><a href="#">6</a><a href="#">7</a><a href="#">8</a><a href="#" class="elp">...</a><a href="#" class="next">&gt;&gt;下一页</a>到第<input type="text">页<button>确定</button></div>
</body>
</html>

f6fcce10089c4762a08afed485d26c90.png 

CSS三角强化

我们来实现这样的布局吧:

e62b4b0924eb4b8d8e4784754c74f658.png

它的原理也是三角

26826b3d55b54a82a6b559b946a856ac.png

width: 0; 
height: 0; 
border-color: transparent red transparent transparent; 
border-style: solid; 
border-width: 22px 8px 0 0; 
<!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>.box1{width: 0;height: 0;/* 上边框宽度调大 */border-top: 100px solid transparent;border-right: 50px solid skyblue;/* 左下的边框宽度设置为0 */border-bottom: 0;border-left: 0;}</style>
</head>
<body><div class="box1"></div>
</body>
</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>.price{width: 160px;height: 24px;border: 1px solid red;text-align: center;line-height: 24px;margin: 0 auto;}.left{position: relative;float: left;width: 90px;height: 100%;background-color: red;font-size: 16px;color: white;font-weight: 700;margin-right: 8px;}.left i{position: absolute;right: 0;height: 0;border-style: solid;border-top: 24px solid transparent;border-right: 10px solid white;border-bottom: 0;border-left: 0;}.right{font-size: 12px;color: gray;text-decoration: line-through;}</style>
</head>
<body><div class="box1"></div><div class="price"><span class="left">$1449<i></i></span><span class="right">$1650</span></div>
</body>
</html>

fd9e5c798f1048468587a4108f7905c5.png

不同浏览器对有些标签的默认值是不同的,为了消除不同浏览器对HTML文本呈现的差异,照顾浏览器的兼 容,我们需要对CSS 初始化

简单理解: CSS初始化是指重设浏览器的样式。 (也称为CSS reset)

每个网页都必须首先进行 CSS初始化。

Unicode编码字体:

我们把中文字体的名称用相应的Unicode编码来代替,这样就可以有效的避免浏览器解释CSS的时候出现乱码的问题:

黑体 \9ED1\4F53

宋体 \5B8B\4F53

微软雅黑 \5FAE\8F6F\96C5\9ED1

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/19496.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

AutosarMCAL开发——基于EB DsAdc驱动

目录 一、旋转变压器与DsAdc原理1.常见电机角度反馈方式2.可变磁阻旋变工作原理3.使用TC3XX EDSADC进行旋变软解码 二、EB配置1.载波输出2.通道配置3.调制器4.滤波链路5.整流6.积分 三、Mcal接口应用1.AUtosar标准API接口2.应用步骤 四、总结 一、旋转变压器与DsAdc原理 1.常见…

web应用安全和信息泄露预防

文章目录 1&#xff1a;spring actuator导致的信息泄露1.1、Endpoint配置启用检测1.2、信息泄露复现1.3、防御 2&#xff1a;服务端口的合理使用3&#xff1a;弱口令&#xff08;密码&#xff09;管理4&#xff1a;服务端攻击4.1、短信业务&#xff0c;文件上传等资源型接口1、…

C语言:链表

链表是一种常见的线性数据结构&#xff0c;其中每个元素&#xff08;称为节点&#xff09;包含两部分&#xff1a;数据和指向下一个节点的指针。链表的主要优点是插入和删除操作的时间复杂度较低&#xff0c;但随机访问的效率不如数组。 1. 链表的基本概念 节点&#xff08;N…

webpack配置

4-3vue-loader测试_哔哩哔哩_bilibili 一.新建文件夹vue_todo&#xff0c;vscode打开 二.ctrl打开终端&#xff0c;输入npm init -y&#xff0c;快速生成一个默认的package.json文件 之后左边出现项目初始化文件package.json 三.接下来需要webpack完成打包&#xff0c;所以安装…

字节跳动辞退103人

大家好&#xff0c;我是程序员面试刷题平台的鸭鸭&#xff01; 在前阵子实习生破坏大模型训练事件之后&#xff0c;字节又上了一次热搜。 鸭鸭吃完瓜&#xff0c;只能说&#xff0c;社会险恶啊同学们&#xff01; 5 号&#xff0c;字节跳动内部发布了年内第四份《企业纪律与职…

大型语言模型综述 A Survey of Large Language Models

文章源自 2303.18223 (arxiv.org) 如有侵权&#xff0c;请通知下线 这是一篇关于大语言模型&#xff08;LLMs&#xff09;的综述论文&#xff0c;主要介绍了 LLMs 的发展历程、技术架构、训练方法、应用领域以及面临的挑战等方面&#xff0c;具体内容如下&#xff1a; 摘要…

服务器作业4

[rootlocalhost day04]# vim 10.sh [rootlocalhost day04]# cat 10.sh #通过shell脚本分析部署nginx网络服务 #1.接收用户部署的服务名称 read -p "服务名称:(nginx)" server if [ $server ! nginx ];then echo "输入的不是nginx,脚本退出" exit 1…

Linux基础(二十)——程序管理与 SELinux 初探

程序管理与 SELinux 初探 1. 程序和进程2.程序调用流程3. 一个bash中的多任务工作管理4.进程管理4.1 查询进程4.2 进程的执行顺序 5.系统资源的观察6. /proc/* 代表的意义7.SELinux 1. 程序和进程 2.程序调用流程 程序与进程之间的关系&#xff1a; 从上图可以看出&#xff0…

vue3 路由写法及传参方式 !超详细

Vue Router 是 Vue.js 官方的路由管理器。它主要用于单页面应用程序&#xff08;SPA, Single Page Application&#xff09;中&#xff0c;帮助解决页面导航、组件复用等问题。 基本的使用 1.router配置文件代码 创建一个ts文件,用来写路由器 // 创建一个路由器,并暴露出去 …

MATLAB绘制正四面体、正六面体

MATLAB绘制正四面体、正六面体 clc;close all;clear all;warning off;% clear all rand(seed, 100); randn(seed, 100); format long g;% 正四面体&#xff08;Tetrahedron&#xff09; % 顶点坐标&#xff08;正四面体的顶点位于一个正方体的对角线上&#xff0c;并经过适当缩…

一文了解 inductive bias(归纳偏好)

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 归纳偏好&#xff08;Inductive Bias&#xff09;是机器学习中的一个非常基础但又非常重要的概念。为了更好地理解它&#xff0c;我们先从 “归纳” 和 “偏好” 这两个词开始讲解。 什么是归纳&#x…

leetcode844:比较含退格的字符串

题干 题目分析 两个字符串要进行比较&#xff0c;#代表着回车&#xff0c;也就是删除之前的字符。 若按照遍历的惯例&#xff0c;选择从前到后遍历&#xff0c;但这样没法判断&#xff0c;因为#之前被删除的部分是不需要相同的。 因此考虑到#的含义&#xff0c;我们应该选择从…

【Python爬虫实战】从入门到精通:全面解析IP代理池的原理与实战应用

&#x1f308;个人主页&#xff1a;易辰君-CSDN博客 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、IP代理池 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;主要功能 &#xff08;三…

c++_day2

第一题&#xff1a; 继续为 mystring类编写以下方法&#xff1a; 1&#xff1a;析构函数&#xff0c;释放buf指向的堆空间 2&#xff1a;编写 append(const mystring r) 为当前字符串尾部,拼接新的字符串r 3&#xff1a;编写 isEqual(const mystring r) 判断当前字符串和 字符串…

机器学习基础06

目录 1.梯度下降 1.1梯度下降概念 1.2梯度下降公式 1.3学习率 1.4实现梯度下降 1.5API 1.5.1随机梯度下降SGD 1.5.2小批量梯度下降MBGD 1.6梯度下降优化 2.欠拟合过拟合 2.1欠拟合 2.2过拟合 2.3正则化 2.3.1L1正则项&#xff08;曼哈顿距离&#xff09; 2.3.2…

基于一种基于OCR图像识别技术的发票采集管理系统及方法

本发明涉及了一种基于OCR图像识别技术的发票采集管理系统及方法&#xff0c;该系统的发票信息采集单元采集发票图片信息数据&#xff0c;OCR图像识别单元基于OCR图像识别技术并结合人工智能深度学习算法对发票图片信息数据进行识别读取以获得OCR图像识别结果&#xff0c;发票信…

Windows注册表基础学习

修改注册表让cmd ascii输出有颜色 reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1 如何打开注册表编辑器 运行regedit 按下"Winr"组合键&#xff0c;在打开的"运行"对话框中输入"regedit"&#xff0c;单击"确定"…

CarSim复制数据注意事项

更正&#xff0c;上图中提到的“数据集”应该是“数据类别”&#xff0c;可以理解为数据集的一个子集。

Spring:注解开发依赖注入

Spring为了使用注解简化开发&#xff0c;并没有提供构造函数注入、setter注入对应的注解&#xff0c;只提供了自动装配的注解实现。 直接上代码&#xff1a; 1&#xff0c;添加一个配置类SpringConfig Configuration ComponentScan("com.itheima") //PropertySourc…