最全【玩转CSS】这些高级技巧,你都会吗(1)

border: 5px solid transparent;
border-bottom-color: pink;
}


![在这里插入图片描述](https://img-blog.csdnimg.cn/6a9366c10a5b4b0da752f6a0f71469a0.png)


## CSS 用户界面样式


### 1. 什么是界面样式


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


* 更改用户的鼠标样式
* 表单轮廓
* 防止表单域拖拽


### 2. 更换用户鼠标样式



li { cursor: pointer; }


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




| 属性值 | 描述 |
| --- | --- |
| **default** | 小白,默认 |
| **pointer** | 小手 |
| **move** | 移动 |
| **text** | 文本 |
| **not-allowed** | 禁止 |



鼠标样式
  • 我是鼠标默认样式
  • 我是鼠标小手样式
  • 我是鼠标移动样式
  • 我是鼠标文本样式
  • 我是鼠标禁止样式

### 3. 表单轮廓线


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


### 4. 防止表单域拖拽


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


给文本域添加 `resize: none;` 样式之后,就可以防止被拖拽



去掉表单轮廓线和防止文本域拖拽

textarea {
resize: none;
}


![在这里插入图片描述](https://img-blog.csdnimg.cn/1794605e43194ad9b6e535dbf5c957db.gif#pic_center)


## vertical-align 属性应用


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


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


语法:



vertical-align: baseline | top | middle | bottom




| 值 | 描述 |
| --- | --- |
| **baseline** | 默认,元素放置在父元素的基线上 |
| **top** | 把元素的顶端于行中最高元素的顶端对齐 |
| **middle** | 把此元素放置在父元素的中部 |
| **bottom** | 把元素的顶端与行中最低的元素的顶端对齐 |



vertical-align 一生之敌

![在这里插入图片描述](https://img-blog.csdnimg.cn/ca9f27ee205940099c6c2237607e3ab2.png)


### 1. 图片、表单和文字对齐


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


![在这里插入图片描述](https://img-blog.csdnimg.cn/cf1ed475e6e641d29453396f181266ee.png)


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


![在这里插入图片描述](https://img-blog.csdnimg.cn/c5283f2d5e934ef49cb3c08ea69c29be.png)


### 2. 解决图片底部默认白色间隙问题


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


主要解决方法有两种:


1. 给图片添加 `vertical-align: middle | top | bottom;` 等 (推荐)
2. 把图片转换为块级元素 `display: block;`



解决图片底部空白间隙

img {
vertical-align: bottom;
}


![在这里插入图片描述](https://img-blog.csdnimg.cn/e42d6020a89f4cc5a30b930ec8dc62f0.png)


## 溢出的文字省略号显示


### 1. 单行文本溢出显示省略号——必须满足三个条件



/* 1.文字显示不开时强制显示 */
white-space: nowrap;
/* 2. 超出部分隐藏 */
overflow: hidden;
/* 3. 文字用省略号替代超出的部分 */
text-overflow: ellipsis;



单行文字溢出
衣带渐宽终不悔,为伊消得人憔悴

![在这里插入图片描述](https://img-blog.csdnimg.cn/6ba819e7c2e34c5cb6d231cbab317566.png)


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


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



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



多行文字溢出
衣带渐宽终不悔,为伊消得人憔悴.衣带渐宽终不悔,为伊消得人憔悴

![在这里插入图片描述](https://img-blog.csdnimg.cn/ed89e11866bc470eafe6aa47b5ab7637.png)


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


## 常见布局技巧


### 1. margin负值的运用一


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



margin负值的巧妙运用
  • 1
  • 2
  • 3
  • 4
  • 5

![在这里插入图片描述](https://img-blog.csdnimg.cn/4ce959d7cb044fdaba7168509b41632d.png)


### 2. margin负值的运用二


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



margin负值的巧妙运用

ul li:hover {
/* 盒子没有定位时,加相对定位 */
position: relative;
/* 盒子有定位时,由于子绝父相无法添加相对定位 */
z-index: 1;
border: 1px solid red;
}

  • 1
  • 2
  • 3
  • 4
  • 5

![在这里插入图片描述](https://img-blog.csdnimg.cn/8c72d2eb483244519af25f0288723050.gif#pic_center)


### 3. 文字围绕浮动元素


类似于下图这样的效果,该怎么实现呢?


![在这里插入图片描述](https://img-blog.csdnimg.cn/0601bfc1bca34678a96b31ffd024d7f5.png)



文字围绕浮动元素

.pic {
float: left;
width: 120px;
height: 60px;
margin-right: 10px;
}

.pic img {
width: 100%;
border-radius: 15px;
}

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

河南一景区爆火,风景优美物价低,吸引许多游客前来打卡


![在这里插入图片描述](https://img-blog.csdnimg.cn/b3c66c3fe91b45fe839b1e53588eebd2.png)


### 4. 行内块的巧妙运用



行内块的巧妙运用

.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;
}

.box .prev,
.box .next {
width: 85px;
}

.box .current,
.box .elp {
background-color: #fff;
border: none;
}

.box input {
width: 45px;
height: 36px;
border: 1px solid #ccc;
outline: none;
}

.box button {
width: 60px;
height: 36px;
background-color: #f7f7f7;
border: 1px solid #ccc;
}

2 3 4 5 6 ... 到第 页 确定

![在这里插入图片描述](https://img-blog.csdnimg.cn/f2eb60cb921746fbb703f272e0dca3ba.png)


### 5. CSS三角强化



CSS三角巧妙运用

.miaosha {
position: relative;
float: left;
width: 90px;
height: 100%;
background-color: red;
text-align: center;
color: #fff;
font-weight: 700;
margin-right: 8px;
}

.miaosha i {
position: absolute;
top: 0;
right: 0;
width: 0;
height: 0;
/* 1. 只保留右边的边框有颜色 */
border-color: transparent #fff transparent transparent;
/* 2. 样式都是solid */
border-style: solid;
/* 3. 上边框宽度要大,右边框宽度稍小,其余边框为0 */
border-width: 24px 10px 0 0;
}

.origin {
font-size: 12px;
color: gray;
text-decoration: line-through;
}

¥9.99 ¥9999

效果图:


![在这里插入图片描述](https://img-blog.csdnimg.cn/caa1692411034725937a3c3145d07fcc.png)


## CSS初始化


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


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


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


这里我们以京东 **CSS** 初始化代码为例,打开京东商城源代码,找到其 **CSS** 代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/bbfb03173bee4bcf800134955dfa2037.png)


再找到初始化代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/cc622ed8706143e9aaf1be94d2549315.png)


我们来看一下它都做了些什么工作



/* 把所有标签的内外边距清零 */
* {
margin: 0;
padding: 0
}

/* em 和 i 斜体的文字不倾斜 */
em,
i {
font-style: normal
}

/* 去掉 li 的小圆点 */
li {
list-style: none
}

img {
/* border: 0 照顾低版本浏览器,如果图片外面包含了链接会有边框的问题 */
border: 0;
/* 取消图片底侧有空白缝隙的问题 */
vertical-align: middle
}

button {
/* 当我们鼠标经过button按钮的时候,鼠标变成小手 */
cursor: pointer
}

a {
color: #666;
text-decoration: none
}

a:hover {
color: #c81623
}

button,
input {
/* “\5B8B\4F53” 就是宋体的意思 */
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 {

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

c81623
}

button,
input {
/* “\5B8B\4F53” 就是宋体的意思 */
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 {

[外链图片转存中…(img-SiObXP9S-1714810422436)]
[外链图片转存中…(img-bmPTS4H5-1714810422437)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值