失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【HTML+CSS】CSS高级技巧:精灵图+字体图标+CSS三角应用

【HTML+CSS】CSS高级技巧:精灵图+字体图标+CSS三角应用

时间:2023-04-06 22:05:15

相关推荐

【HTML+CSS】CSS高级技巧:精灵图+字体图标+CSS三角应用

学习视频及笔记参考来源:

黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动端前端视频教程_哔哩哔哩_bilibili

一、精灵图

1、精灵图的理解

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

(2)目的:有效的减少服务器接收和请求的次数,提高页面的加载速度。

2、精灵图的语法

/* 1、先导入精灵图作为背景图。 *//* 2、定位到想要的图标的位置 *//* 注意:x轴向右边走为正值,左边走为负值;y轴向下走为正值,向上走为负值。*/background: url(images.jpg);background-position: -100px 0;

二、字体图标

1、字体图标的理解

(1)字体图标可以为前端工程师提供一种方便高效的图标使用方式,展示的是图标,本质属于字体。

(2)优点:

轻量级:一个图标字体要比一系列的图像要小。一旦字体加载了,图标就会马上渲染出来,减少了服务器请求。灵活性:本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果、旋转等。兼容性:几乎支持所有的浏览器,请放心使用。

(3)精灵图与字体图标的选择问题:

字体图标不能替代精灵技术,只是对工作中图标部分技术的提升和优化。

① 如果遇到一些结构和样式比较简单的小图标,就用字体图标。

② 如果遇到一些结构和样式复杂一点的小图片,就用精灵图。

2、字体图标的下载、引入、追加

2.1 下载

icomoon字库:http://icomoon.io阿里 iconfont 字库 /

2.2 引入

(1)以icomoon为例,进入网站下载所需要的字体图标。

(2)解压文件,把下载包里面的fonts文件夹放入页面根目录下。

(3)在 CSS 样式中全局声明字体: 简单理解把这些字体文件通过css引入到我们页面中。

/* 直接在copy这段代码放到CSS下 */@font-face {font-family: 'icomoon';src: url('fonts/icomoon.eot?7kkyc2');src: url('fonts/icomoon.eot?7kkyc2#iefix') format('embedded-opentype'),url('fonts/icomoon.ttf?7kkyc2') format('truetype'),url('fonts/icomoon.woff?7kkyc2') format('woff'),url('fonts/icomoon.svg?7kkyc2#icomoon') format('svg');font-weight: normal;font-style: normal;}

(4)打开文件里的demo.html,复制所需要的图标,在html标签内加小图标。

<span>  </span>

(5)给标签定义字体。

span {font-family: "icomoon";}

2.3 追加

如果工作中,原来的字体图标不够用了,我们需要添加新的字体图标到原来的字体文件中。

把压缩包里面的 selection.json 从新上传,然后选中自己想要新的图标,从新下载压缩包,并替换原来的文件即可。

三、CSS三角

1、实现代码

将宽度和高度都设置为0,只设置边框,通过设置边框的颜色粗细实现不同的三角样式。

div {width: 0;height: 0;line-height: 0;font-size: 0;border: 50px solid transparent;border-left-color: pink;}

2、不同样式的对比

用CSS实现了下面的图,全部的颜色如第一张所示。无left就是将border-left的颜色改为transparent,宽度改为0。具体实现看最后的代码,新手刚学,并不专业,有错欢迎大家指正。

四、CSS用户界面样式

1、鼠标样式 cursor

设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状。

li {cursor: pointer; }

2、表单轮廓线 outline

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

input {outline: none; }

3、防止拖拽文本域 resize

textarea{ resize: none;}

五、vertical-align属性应用

1、语法

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

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

vertical-align : baseline | top | middle | bottom

2、解决图片底部默认空白缝隙问题

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

解决方法:① 给图片添加 vertical-align:middle | top| bottom 等(建议这么做)。② 把图片转换为块级元素 display: block。

六、溢出的文字省略号显示

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

/*1. 先强制一行内显示文本*/white-space: nowrap; ( 默认 normal 自动换行)/*2. 超出的部分隐藏*/overflow: hidden;/*3. 文字用省略号替代超出的部分*/text-overflow: ellipsis;

2、多行文本溢出显示省略号(有较大兼容问题)

overflow: hidden;text-overflow: ellipsis;/* 弹性伸缩盒子模型显示 */display: -webkit-box;/* 限制在一个块元素显示的文本的行数 */-webkit-line-clamp: 2;/* 设置或检索伸缩盒对象的子元素的排列方式 */-webkit-box-orient: vertical;

七、常见的布局技巧

1、margin负值的运用

多个框边缘叠加时会造成叠加的线更粗。巧妙运用margin负值可以解决这个问题。

(1)实现重叠边框不变粗+定位时边框完整显示(如上图):

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

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

(2)所有 li 同时向左移动不是仅仅平移吗?

答:在CSS的渲染方式中,第一个 li 将会先浮动,并向左移动1px;由于浮动的特性,第二个 li 浮动后将会直接紧贴第一个 li 的右边框,此时中间边框叠加为2px,当我们将第二个 li 向左移动1px时,正好压住相邻盒子边框,实现边框视觉上只有1px。

<style>li {position: relative;float: left;list-style: none;width: 100px;height: 150px;border: 1px solid red;margin-left: -1px;}li:hover {z-index: 1;border: 1px solid orange;}</style>

2、文字围绕浮动元素

巧妙的运用浮动元素不会压住文字的特性。

3、行内块的巧妙运用

实现页码在页面中间显示(如下):

实现方法:

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

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

附录:三角样式对比书写代码

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;}li {list-style: none;}div {margin: 200px auto;width: 1120px;height: 240px;/* background-color: bisque; */}.img {width: 1120px;height: 200px;/* background-color: aquamarine; */}.text {width: 1120px;height: 40px;/* background-color: aqua; */}.img li {position: relative;float: left;width: 200px;height: 200px;margin-left: 20px;/* background-color: aliceblue; */}.text li {float: left;width: 200px;height: 40px;line-height: 40px;text-align: center;margin-left: 20px;}span {position: absolute;width: 0;height: 0;}.img .y1 span {border-color: red green blue yellow;border-style: solid;border-width: 100px 100px 100px 100px;}.img .y2 span {border-color: red green blue transparent;border-style: solid;border-width: 100px 100px 100px 0;margin-left: 50px;}.img .y3 span {border-color: transparent green blue yellow;border-style: solid;border-width: 0 100px 100px 100px;margin-top: 50px;}.img .y4 span {border-color: red green transparent transparent;border-style: solid;border-width: 100px 100px 0 0;margin-left: 50px;margin-top: 50px;}.img .y5 span {border-color: transparent transparent blue yellow;border-style: solid;border-width: 0 0 100px 100px;margin-left: 50px;margin-top: 50px;}</style></head><body><div class="san"><ul class="img"><li class="y1"><span></span></li><li class="y2"><span></span></li><li class="y3"><span></span></li><li class="y4"><span></span></li><li class="y5"><span></span></li></ul><ul class="text"><li>上下左右</li><li>无left</li><li>无top</li><li>left+bottom</li><li>right+top</li></ul></div></body></html>

如果觉得《【HTML+CSS】CSS高级技巧:精灵图+字体图标+CSS三角应用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。