10、 CSS 三角、用户界面样式、常见布局技巧、vertical-align 、溢出的文字省略号、文字围绕浮动元素

1. CSS 三角

1.1 介绍

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

一张图, 你就知道 CSS 三角是怎么来的了, 做法如下:

1571520965966.png
div {
 width: 0; 
 height: 0;
 border: 50px solid transparent;
 border-color: red green blue black;
 line-height:0;
 font-size: 0;
 }
  1. 我们用css 边框可以模拟三角效果

  2. 宽度高度为0

  3. 我们4个边框都要写, 只保留需要的边框颜色,其余的不能省略,都改为 transparent 透明就好了

  4. 为了照顾兼容性 低版本的浏览器,加上 font-size: 0; line-height: 0;

1.2 案例:京东三角

1.2.1效果图

1571521183026.png

1.2.2 代码参考

<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>CSS 三角制作</title>
 <style>
 .box1 {
 width: 0;
 height: 0;
 /* border: 10px solid pink; */
 border-top: 10px solid pink;
 border-right: 10px solid red;
 border-bottom: 10px solid blue;
 border-left: 10px solid green;
 }
 .box2 {
 width: 0;
 height: 0;
 border: 50px solid transparent;
 border-left-color: pink;
 margin: 100px auto;
 }
 .jd {
 position: relative;
 width: 120px;
 height: 249px;
 background-color: pink;
 }
 .jd span {
 position: absolute;
 right: 15px;
 top: -10px;
 width: 0;
 height: 0;
 /* 为了照顾兼容性 */
 line-height: 0;
 font-size: 0;
 border: 5px solid transparent;
 border-bottom-color: pink;
 }
 </style>
</head>
<body>
 <div class="box1"></div>
 <div class="box2"></div>
 <div class="jd">
 <span></span>
 </div>
</body>
</html>

2. CSS 用户界面样式

什么是界面样式

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

  • 更改用户的鼠标样式

  • 表单轮廓

  • 防止表单域拖拽

2.1 鼠标样式 cursor

 li {
   cursor: pointer; 
 }

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

1571521805183.png

2.2 轮廓线 outline

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

input {
   outline: none; 
 }

2.3 防止拖拽文本域 resize

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

textarea{ 
 resize: none;
 }

vertical-align 属性应用

3. vertical-align 属性应用

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

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

语法:

 vertical-align : baseline | top | middle | bottom 
1571522023413.png

1571522040645.png

4.1 图片、表单和文字对齐

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

1571522093729.png

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

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

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

主要解决方法有两种:

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

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

1571522162225.png

5. 溢出的文字省略号显示

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

1571522313075.png

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

  /*1\. 先强制一行内显示文本*/
 white-space: nowrap;  ( 默认 normal 自动换行)

 /*2\. 超出的部分隐藏*/
 overflow: hidden;

 /*3\. 文字用省略号替代超出的部分*/
 text-overflow: ellipsis;

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

1571522289409.png

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

overflow: hidden;

/*2\. 文字用省略号替代超出的部分 */
text-overflow: ellipsis;

/* 3\. 弹性伸缩盒子模型显示 */
display: -webkit-box;

/* 4\. 限制在一个块元素显示的文本的行数 */
-webkit-line-clamp: 2;

/* 5\. 设置或检索伸缩盒对象的子元素的排列方式 */
-webkit-box-orient: vertical;

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

6. 常见布局技巧

巧妙利用一个技术更快更好的布局:

  1. margin负值的运用

  2. 文字围绕浮动元素

  3. 行内块的巧妙运用

  4. CSS三角强化

6.1. margin负值运用

1571522666082.png

1571522683897.png

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

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

6.2 文字围绕浮动元素

效果

1571522777745.png

布局示意图

1571522761996.png

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

6.3 行内块巧妙运用

1571522898744.png

页码在页面中间显示:

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

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

1571522910580.png

6.4. CSS 三角强化 案例

6.4.1 原理

1571523024087.png

1571550898114.png

1571548058053.png
<style>
 .box1 {
 width: 0;
 height: 0;

 /* 把上边框宽度调大 */
 /* border-top: 100px solid transparent;
 border-right: 50px solid skyblue; */
 /* 左边和下边的边框宽度设置为0 */
 /* border-bottom: 0 solid blue;
 border-left: 0 solid green; */

 /* 1.只保留右边的边框有颜色 */
 border-color: transparent red transparent transparent;
 /* 2\. 样式都是solid */
 border-style: solid;
 /* 3\. 上边框宽度要大, 右边框 宽度稍小, 其余的边框该为 0 */
 border-width: 100px 50px 0 0 ;
 }

</style>
</head>
<body>
 <div class="box1"></div>
</body>

6.4.2 案例效果

1571548099631.png

6.4.3 代码参考

<!DOCTYPE html>
<html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>CSS三角强化的巧妙运用</title>
 <style>
 .price {
 width: 160px;
 height: 24px;
 line-height: 24px;
 border: 1px solid red;
 margin: 0 auto;
 }
 .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;
 right: 0;
 top: 0;
 width: 0;
 height: 0;
 border-color: transparent #fff transparent transparent;
 border-style: solid;
 border-width: 24px 10px 0 0;
 }
 .origin {
 font-size: 12px;
 color: gray;
 text-decoration: line-through;
 }
 </style>
 </head>
 <body>
 <div class="price">
 <span class="miaosha">
 ¥1650
 <i></i>
 </span>
 <span class="origin">¥5650</span>
 </div>
 </body>
</html>

8. CSS 初始化

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

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

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

这里我们以 京东CSS初始化代码为例。

Unicode编码字体:

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

比如:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • CSS 高级技巧 1. 精灵图 为什么需要精灵图? 精灵图的使用 精灵图课堂案例 1 精灵图 1.1 为什么需要精...
    Tutuls阅读 218评论 0 0
  • 1.1CSS 基础与选择器初识 | CSS 1. CSS 加载方式有几种? CSS样式加载一共有四种方式: 1、行...
    没糖_cristalle阅读 684评论 0 0
  • 一、 精灵图 1.1 为什么需要精灵图 一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器...
    blackmanba_084b阅读 272评论 0 4
  • 1. 精灵图(重点) 1.1 为什么需要精灵图 一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时...
    禾土阅读 98评论 0 0
  • 一、CSS字体属性 1.CSS字体系列 CSS 使用 font-family 属性定义文本的字体系列。 各种字体之...
    testleaf阅读 4,656评论 1 7