05_CSS进阶技巧

1 CSS 规范

遵循以下顺序

  • 布局定位属性:display/position/float/clear/visibility/overflow(建议 display 第一个写)
  • 自身属性:width/height/margin/padding/border/background
  • 文本属性:color/font/text-decoraction/text-align/vertial-align/white-space/break-word
  • 其他属性(CSS3):content/cursor/border-radius/box-shadow/text-shadow/

2 页面布局整体思路

  • 必须确定页面的可视区
  • 分析页面中行模块,以及每个行模块中的列模块
  • 一行中的列模板经常浮动布局,先确定每个列的大小,之后确定列的位置
  • 遵循先写结构,后写样式的原则
  • 先理清楚布局结构,然后再开始编写代码

3 字体图标

3.1 字体图标的来由

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

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

  • 图片文件比较大
  • 图片本身放大缩小会失真
  • 一旦图片制作完毕想要更换,比较复杂

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

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

3.2 字体图标的优点

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

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

  • 兼容性:几乎支持所有的浏览器

注意:字体图标不能代替精灵图,只是对图标部分进行了优化。

总结:

  • 如果遇到一些结构和样式比较简单的小图标,就用字体图标
  • 如果遇到一些结构和样式较复杂的小图标,仍然选用精灵图

3.3 字体图标使用

字体图标是一些网页常见的小图标,我们直接网上下载即可。因此使用步骤可以分为:

  • 字体图标的下载
  • 字体图标的引入(引入到我们html页面中)
  • 字体图标的追加(以后添加新的小图标)
3.3.1 字体图标的下载

推荐下载网站:

  • icomoon 字库 比较全面,国外服务器,打开速度你懂的。

    点击 IcoMoon App->选择需要的图标->点击Generate Font->点击下载

  • 阿里 iconfont 字库 免费图标库。但是需要登录 http://www.iconfont.cn/

3.3.2 字体图标的引入

下载完成后,原文件不要删除,后面会用的到。

我们以 icomoon 字库网为例,将下载包解压,解压之后的文件如图:

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 在CSS样式中全局声明字体:简单理解把这些字体通过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;
}
  • html 标签内添加小图标

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    我们打开解压文件中的 demo.html ,复制想要的图标,粘贴进我们的 <span></span> 标签中。

    给标签定义字体

/* span使用字体图标 */
span {font-family: "icomoon";
}

注意:标签中的 font-family 的值和我们之前引入字体图标的font-family 必须一样,这里均为 icomoon。

3.3.3 字体图标的追加

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

以 icomoon字库 网为例,点击网站内import icons

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

3.3.4 字体文件格式

不同浏览器所支持的字体格式是不一样的,字体图标之所以兼容,就是因为包含了主流浏览器支持的字体文件。

.ttf 格式、.woff 格式、.eot 格式、.svg 格式,不同浏览器支持不同的格式。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.4 阿里 iconfont 字体图标

3.4.1 新建项目
  • 在顶部菜单栏找到->资源管理->我的项目->新建项目
  • 右边点击新建项目,用于保存自己常用的图标
3.4.2 添加购物车
  • 项目新建完成后,需要往项目里添加我们要想使用的图标
  • 顶部菜单找到图标库,搜索⼀个想要的图标,然后添加到购物⻋
3.4.3 添加图标到项目中
  • 添加到购物车完成后,点击右上角的购物车图标,选择添加至项目

  • 选择我们刚刚创建的项目->点击确定

  • 之后自动跳转到对应的项目里了

3.4.4 引入文件
  • 点击项目中下载至本地按钮,将解压的文件夹整体放入项目中,在项目中引用文件中的 iconfont.css 文件
  • 或者点击查看在线链接,生成一个在线地址直接在项目中引用
3.4.5 使用图标
  • 首先标签添加一个 iconfont 类名
  • 再给标签添加一个图标对应的类名
  • 图标大小通过 font-size 来调整

4 CSS 用户界面样式

4.1 什么是界面样式

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

  • 更改用户的鼠标样式

  • 表单轮廓

  • 防止表单域拖拽

4.2 鼠标样式 cursor

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

li {cursor: pointer; 
}
属性值描述
default小白,默认
pointer小手
move移动
text文本
not-allowed禁止

4.3 轮廓线 outline

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

input {outline: none;
}

4.4 防止拖拽文本域 resize

实际页面中,文本域右下角不可拖拽。

textarea {resize: none;
}

5 vertical-align 属性应用

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

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

vertical-align: baseline | top | middle | bottom
描述
baseline默认,元素放置在父元素的基线上
top把元素的顶端与行中最高元素的顶端对齐(顶线对齐)
middle把此元素放置在父元素的中部(中线对齐)
bottom把元素的顶端与行中最低的元素的顶端对齐(底线对齐)
image-20211209231227334

5.1 图片、表单和文字对齐

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

此时可以给图片、表单这些行内块元素的 vertical-align 属性设置为 middle 就可以让文字和图片垂直居中对齐了。

5.2 图片底侧空白缝隙解决

bug:图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐(给图片加边框就可以看见)

主要解决办法有两种:

  • 给图片添加 vertical-align : middle | top |bottom 等(常用方式)
  • 把图片转换为块级元素 display:block;,因为块级元素不会有vertical-align 属性

6 溢出文字省略显示

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

必须满足三个条件:

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

6.2 多行文本溢出显示省略号显示(了解)

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

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

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

7 常见布局技巧

7.1 margin 负值的运用

两个盒子加边框1px,浮动,贴紧会出现 1 + 1 = 2px

给右边盒子添加margin-left: -1px

正数向右边走,负数向左边走

当我们有多个盒子时的解决办法:

  • 让每个盒子 margin 往左侧移动 -1px 正好压住相邻盒子边框
  • 鼠标经过某个盒子的时候,提高当前盒子的层级即可
  • 如果没有定位,则加相对定位(保留位置)
  • 如果有定位,则加 z-index

7.2 文字围绕浮动元素

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

7.3 行内块巧妙运用

页码在页面中间显示

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

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

8 CSS 初始化

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 黑体 \9ED1\4F53
  • 宋体 \5B8B\4F53
  • 楷体 \6977\4F53
  • 微软雅黑 \5FAE\8F6F\96C5\9ED1

浏览器样式初始化

  • normalize Normalize.css 使浏览器呈现所有 HTML 元素更加一致,并且符合现代 web 标准。Normalize.css 只作用于需要规范化的样式。

  • 样式初始化

    * {margin: 0;padding: 0
    }em,
    i {font-style: normal
    }li {list-style: none
    }img {border: 0;vertical-align: middle
    }button {cursor: pointer
    }a {color: #666;text-decoration: none
    }a:hover {color: #c81623
    }button,
    input {font-family: 'Microsoft YaHei', 'Heiti SC', tahoma, arial, 'Hiragino Sans GB', "\5B8B\4F53", sans-serif
    }body {-webkit-font-smoothing: antialiased;background-color: #fff;font: 12px/1.5 'Microsoft YaHei', 'Heiti SC', tahoma, arial, 'Hiragino Sans GB', "\5B8B\4F53", sans-serif;color: #666
    }.hide,
    .none {display: none
    }.clearfix:after {visibility: hidden;clear: both;display: block;content: ".";height: 0
    }.clearfix {*zoom: 1
    }
    

9 练习作业

1、使用字体图标给小米侧边栏加上箭头

2、菜单内容超出部分,用文本超出省略解决

ckground-color: #fff;
font: 12px/1.5 ‘Microsoft YaHei’, ‘Heiti SC’, tahoma, arial, ‘Hiragino Sans GB’, “\5B8B\4F53”, sans-serif;
color: #666
}

.hide,
.none {
display: none
}

.clearfix:after {
visibility: hidden;
clear: both;
display: block;
content: “.”;
height: 0
}

.clearfix {
*zoom: 1
}

## 9 练习作业1、使用字体图标给小米侧边栏加上箭头2、菜单内容超出部分,用文本超出省略解决

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EMQX Enterprise 5.2 发布:Flow 设计器,Amazon Kinesis,Azure Event Hubs

EMQX Enterprise 5.2.0 版本现已正式发布&#xff01; 新版本带来了一系列重磅更新&#xff0c;最令人瞩目的是可拖拽的可视化 Flow 设计器&#xff0c;它可以帮助企业快速创建、测试和部署数据集成。同时&#xff0c;我们新增了对 Amazon Kinesis 和 Azure Event Hubs 的支持…

React 如何导出excel

在现代的Web开发中&#xff0c;数据导出是一个非常常见的需求。而在React应用中&#xff0c;我们经常需要将数据导出为Excel文件&#xff0c;以便用户可以轻松地在本地计算机上查看和编辑。本文将介绍如何在React应用中实现导出Excel文件的功能。 章节一&#xff1a;安装依赖 …

VMware安装CentOS Stream 8以及JDK和Docker

一、下载镜像源 地址&#xff1a;https://developer.aliyun.com/mirror/?spma2c6h.25603864.0.0.285b32d48O2G8Y 二、安装配置 配置项 一共有以下这些&#xff0c;其中软件、软件选择 、安装目的地、网络主机名需要讲一下&#xff0c;其他都简单&#xff0c;自行设置即可。 …

电脑出现丢失msvcp71.dll的解决方法_常见msvcp71.dll解决方法

当电脑提示“找不到 msvcp71.dll”时&#xff0c;意味着您的系统缺少这个重要的动态链接库文件。msvcp71.dll 是 Visual Studio 2010 运行时所需的一个组件&#xff0c;因此如果您安装了 Visual Studio 2010 或更高版本&#xff0c;那么您很可能会遇到这个问题。以下是解决这个…

uni-app实现web-view图片长按下载

<template><view><web-view :webview-styles"webviewStyles" :src"webUrl"></web-view></view> </template> uniapp的web-view中图片无法长按保存&#xff0c;IOS下是正常的&#xff0c;但是Android下长按无反应 解…

Spring Cloud Alibaba Gateway 全链路跟踪TraceId日志

前言 凡是文中需要注册到nacos的都需要这个jar包 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>凡是使用config jar包的都需要写bootstrap.prop…

React实战过程的知识了解

做项目用到react和antd&#xff0c;没办法循序渐进的学习&#xff0c;只能把一些点记录在这里&#xff0c;希望大家指正。 1.杂七杂八 正文 //actionRef&#xff0c;操作表单的预设方法&#xff0c;包括&#xff1a;刷新、重置所有项并刷新、重置到默认项、加载更多、清空选…

ipad触控笔有必要买原装吗?ipad2023手写笔推荐

目前&#xff0c;在无纸教学、无纸办公的大背景下&#xff0c;电容笔得到了广泛的关注。只是&#xff0c;对于这两支电容笔的不同之处&#xff0c;不少人并不是很清楚。其实这两种电容笔都很好区分&#xff0c;第一种是主动电容笔&#xff0c;也就是我们常用的电容式屏幕&#…

[JAVAee]Spring MVC

目录 Spring MVC框架 MVC Spring MVC的功能 用户与程序的连接 RequestMapping 指定为Get请求 指定为Post请求 获取参数 单个参数 表单传递多个参数 传递对象 后端参数重命名(后端参数映射) 设置参数必传/非必传 获取JSON对象 获取URL中的参数 上传文件 获取…

十六、MySql的MVCC机制CONNECT(收官!)

文章目录 一、数据库并发的场景有三种&#xff1a;二、读-写&#xff08;一&#xff09;3个记录隐藏列字段&#xff08;二&#xff09;undo 日志&#xff08;三&#xff09;模拟 MVCC&#xff08;四&#xff09;一些思考&#xff08;五&#xff09;Read View 一、数据库并发的场…

【深度学习】Pytorch 系列教程(十二):PyTorch数据结构:4、数据集(Dataset)

目录 一、前言 二、实验环境 三、PyTorch数据结构 0、分类 1、张量&#xff08;Tensor&#xff09; 2、张量操作&#xff08;Tensor Operations&#xff09; 3、变量&#xff08;Variable&#xff09; 4、数据集&#xff08;Dataset&#xff09; 随机洗牌 一、前言 Ch…

FPGA——WS2812B彩灯点亮

文章目录 前言一、WS2812B手册分析原理1.1 主要特点1.2 器件图1.3 接口1.4 输入码型1.5 归零码&#xff08;RZ&#xff09;和非归零码(NRZ)&#xff08;拓展&#xff09;1.6 级联输出1.7 输入数据格式 二、FPGA点亮彩灯2.1 代码 三、总结 前言 本篇博客是记录WS2812手册的学习…

web二级操作题

js和css的引入 在 HTML 中&#xff0c;你可以使用 <script> 和 <link> 标签来引入外部的 JavaScript 文件和 CSS 文件。 引入外部的 JavaScript 文件&#xff1a; <script src"path/to/script.js"></script>src 属性指定了 JavaScript 文…

关于PyInstaller打包exe程序的参数用法大全

PyInstaller可以将Python程序打包成一个exe程序来独立运行&#xff0c;用户使用时只需要执行这个exe文件即可&#xff0c;不需要在机器上再安装Python及其他包就可运行了。另外&#xff0c;PyInstaller相较于其他打包程序&#xff0c;比如py2exe&#xff0c;大多时候使用起来更…

分类预测 | MATLAB实现WOA-CNN-GRU-Attention数据分类预测

分类预测 | MATLAB实现WOA-CNN-GRU-Attention数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-GRU-Attention数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现WOA-CNN-GRU-Attention数据分类预测&#xff0c;运行环境Matlab2021b及以上&…

创建表

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 创建表 语法格式: create table 表名(列名1 数据类型,列名2 数据类型,... ,列名n, 数据类型 ); 练习:在czwbkl库中,创建一格test01表 跟大家说…

2、RocketMQ消息的分类

一、普通消息 1 消息发送分类 Producer对于消息的发送方式也有多种选择&#xff0c;不同的方式会产生不同的系统效果。 同步发送消息 同步发送消息是指&#xff0c;Producer发出⼀条消息后&#xff0c;会在收到MQ返回的ACK之后才发下⼀条消息。该方式的消息可靠性最高&#xff…

Python之列表

标题 列表什么是列表列表的创建列表的删除列表的访问 列表的常用方法append()、insert()、extend()pop()、remove()、clear()count()、index()list()、 filter()、 reduce()、lambda() 列表支持的运算加法运算符乘法运算符*成员测试运算符in 内置函数对列表的操作列表推导式列表…

在Idea中调试本地Docker

报错&#xff1a; Error running myApp: Unable to open debugger port (localhost:5005): java.net.SocketException "Connection reset" 原因&#xff1a; Docker配置里边没有配置环境变量JAVA_TOOL_OPTIONS. 解决&#xff1a; 在Docker下加入运行时的环境变量JAVA…

ffmpeg抠图

1.不用png&#xff0c;用AVFrame 2.合流 3.图片抠图透明 (1.)mp4扣yuv图&#xff0c;(2)用1.把一张yuv标记为透明然后av_hwframe_transfer_data到GPU (3)用抠图算法函数对yuv进行处理 (4) qsv的h264_qsv只支持nv12和qsv&#xff0c;但qsv本身并不限制像素格式&#xff0c;比如在…