CSS2-3常见的demo列子总结

CSS2-3常见的demo列子总结

阅读目录

  • 1. css超过一行或者多行后显示省略号。
  • 2. css图片未知高度垂直居中完美解决方案。
  • 3. 学习使用 :before和 :after伪元素
回到顶部

1. css超过一行或者多行后显示省略号。

  1. Css实现超过一行后显示省略号;代码如下:
<p style="width:200px;white-space: nowrap;text-overflow:ellipsis;overflow:hidden;">我武汉东方店hi肉肉肉团阿斯达萨顶顶发感染他人山东省地方反而</p>

效果如下:

我们下面来理解 text-overflow 和 white-space 2个属性;

一:text-overflow属性  clip | ellipsis 默认值clip

  clip:当对象内文本溢出时不显示省略标记(...),而是将溢出的部分裁切掉。

<p style="width:200px;white-space: nowrap;text-overflow:clip;overflow:hidden;">我武汉东方店hi肉肉肉团阿斯达萨顶顶发感染他人山东省地方反而</p>  

效果如下:

  ellipsis:当对象内文本溢出时显示省略标记(...)。

二:white-space:normal | pre | nowrap | pre-wrap | pre-line 默认值为normal

 normal:默认处理方式。

  pre:用等宽字体显示预先格式化的文本,不合并文字间的空白距离,当文字超出边界时不换行。可查阅pre对象

  nowrap:强制在同一行内显示所有文本,直到文本结束或者遭遇br对象。

  pre-wrap:用等宽字体显示预先格式化的文本,不合并文字间的空白距离,当文字碰到边界时发生换行。

  pre-line:保持文本的换行,不保留文字间的空白距离,当文字碰到边界时发生换行。

含义:使用text-overflow:ellipsis 和 white-space: nowrap 的含义是:把文本限制在一行(white-space:nowrap), 这一行是有限制的(因此需要设置width), 并且当内容溢出来的时候需要隐藏(overflow:hidden),然后出现省略号(text-overflow:ellipsis);

 2. Css实现超过指定的行数后显示省略号;

我们看看webkit浏览器或者移动端浏览器的情况;在webkit浏览器中我们可以直接使用webkit的css的扩展属性(也是私有属性) –webkit-line-clamp; 注意:这个属性不属于css规范当中的属性。但是需要如下属性结合使用:

  1. display: -webkit-box; 将对象作为弹性伸缩盒子模型显示。
  2. -webkit-box-orient: vertical; 设置或检索伸缩盒子对象的子元素的排列方式。
  3. text-overflow:ellipsis; 指定多行文本的情况下,使用省略号显示超出范围的文本。
  4. -webkit-line-clamp: 2; 含义是超出2行后的文字 使用省略号来显示;

如下demo代码:

<p style="width:200px;text-overflow:ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;overflow:hidden;">我武汉东方店hi肉肉肉团阿斯达萨顶顶发感染他人山东省地方反而</p>

页面显示效果如下:

如上的解决方案是针对webkit浏览器或者移动端来做的。

回到顶部

2. css图片未知高度垂直居中完美解决方案。

方法1. css图片未知高度在标准浏览器下垂直居中.

该方法的实现方式是将外部容器显示模式设置成display:table;img标签外部再套一个容器,并对该容器设置显示模式为display:table-cell; 类似与表格的显示方式,且不要使用float等属性,但是在IE6、IE7下是不支持的;如下代码:

<ul class="list"><li><img src="m1.jpg"/></li>
</ul>
<ul class="list"><li><img src="m2.jpg"/></li>
<ul>

CSS代码如下:

<style>*{margin:0;padding:0;}ul,li{list-style:none;}.list {float:left;margin:20px;width:250px;height:150px;display:table;text-align:center;border:1px solid #d3d3d3;}.list li{display:table-cell;vertical-align:middle;}</style>

效果截图如下:

针对IE6,IE7的解决方案是使用定位的方式;我们可以使用父容器使用相对定位,对img的外层容器使用绝对定位 top:50%;left:50%;然后再对img元素定位top:-50%;left:-50%;即可,代码如下:

<style>*{margin:0;padding:0;}ul,li{list-style:none;}.list {*position:relative; float:left;margin:20px;width:250px;height:150px;display:table;text-align:center;border:1px solid #d3d3d3;}.list li{display:table-cell;vertical-align:middle;*position:absolute;*left:50%;*top:50%;}.list li img{position:relative;*left:-50%;*top:-50%;}</style>

效果如下演示:

方法2. css图片未知高度在标准浏览器下垂直居中.

下面我们是使用css的hack的解决方案,我们首先来看看标准浏览器下;比如现在的HTML代码如下:

<ul class="list"><li><img src="m1.jpg"/></li>
</ul>

Css代码如下:

*{margin:0;padding:0;}
ul,li{list-style:none;}
.list {margin:20px;width:250px;height:150px;display:table-cell;text-align:center;vertical-align:middle;border:1px solid #d3d3d3;
}

在标准浏览器显示效果如下:

IE6下如下:

下面我们使用定位的方式对IE6,7下的居中对齐修复;如下我们的css代码改成如下:

<style>*{margin:0;padding:0;}ul,li{list-style:none;}.list {position:relative; margin:20px;width:250px;height:150px;display:table-cell;text-align:center;vertical-align:middle;border:1px solid #d3d3d3;}.list li{*position:absolute; *top:50%;            }.list li img{*position:relative; *top:-50%;*left:-50%;         }</style>

IE6截图如下:

这个方法有一个缺点是:对父级容器使用display:table-cell, 因此不能同时使用margin或者float属性等。

方法3. css图片未知高度在标准浏览器下垂直居中.

在标准浏览器下外部容器还是使用显示模式设置为display:table-cell; IE6/7下利用img标签的前面插入一对空标签的方法;如下代码:

<ul class="list"><li><i></i><img src="m1.jpg"/></li>
</ul>

CSS代码如下:

<style>*{margin:0;padding:0;}ul,li{list-style:none;}.list {width:250px;height:150px;display:table-cell;text-align:center;vertical-align:middle;border:1px solid #d3d3d3;}.list i{*display: inline-block;*height:100%;*vertical-align:middle;}.list li img{*vertical-align:middle;        }</style>

在IE6下显示效果还是如下:

方法4. css图片未知高度在标准浏览器下垂直居中.

该方法对标准浏览器下还是使用上面的display:table-cell来解决,但是针对IE6或者7的话,将图片外部容器的字体大小设置成该高度的0.873倍就可以实现居中,如下HTML代码:

<ul class="list"><li><img src="m1.jpg"/></li>
</ul>

Css代码如下:

<style>*{margin:0;padding:0;}ul,li{list-style:none;}.list {width:250px;height:150px;display:table-cell;text-align:center;vertical-align:middle;border:1px solid #d3d3d3;/* 兼容IE6或者7 */*display:block;*font-size:131px; /* 字体大小约为容器高度的0.873倍 150*0.873 = 349 */*font-family:Arial; /* 防止非utf-8引起的hack失效问题,如gbk编码 */}</style>

效果如下:

回到顶部

3. 学习使用 :before和 :after伪元素

伪元素 顾名思义 就是创建了一个虚假元素,并插入到目标元素之前或者之后。这两个伪类下特有的属性content,用于在css渲染中头部和尾部添加内容,伪元素必须与content结合来使用,否则毫无意义,但是添加的内容不会改变文档的内容,不会出现在DOM结构中,仅仅是对用户是可见的,但是对DOM结构是不可见的。比如如下代码:

<div class="example">example</div>

CSS代码如下:

.example:before{content:"#";
}.example:after{content: "@";
}

在页面上被渲染成如下内容:

#example@

二:指定个别元素不进行插入

针对这个问题,content还有一个属性none,含义是不需要为该元素有任何内容;比如如下代码:

<div class="example">example</div>
<div class="example sample">example</div>
<div class="example">example</div>

首先我对所有example类名前面添加#号,后面添加@符合,然后我对包含sample类名的前面和后面不添加任何符合代码如下:

.example:before{content:"#";
}
.example:after{content: "@";
}
.sample:before{content: none
}
.sample:after{content: none
}

三:插入图像文件

我们不仅可以使用before或者after选择器的在前面或者后面插入文字外,我们还可以插入图像文件,插入图像文件时,需要使用url属性值来指定图像的路径,比如如下代码:

<div class="example">example</div>
<div class="example sample">example</div>
<div class="example">example</div>

CSS代码如下:

.example:before{content:url("https://img.alicdn.com/tps/TB1sb2HJVXXXXXAXpXXXXXXXXXX-120-55.png_120x120.jpg");}
.example:after{content: "@";
}

效果如下:

可以看到,在前面插入了一个图片。

浏览器支持程度:firefox,chrome,safari,opera,IE8+等浏览器。

2. 使用content属性来插入项目编号

<元素>: before {content:counter(计算器名)}

并且需要在元素的样式中追加对元素的counter-increment属性的指定。

注意:计数器名可以任意写,但是counter-increment指定的名字要相同。

如下代码:

<h1>我想解决单身问题</h1>
<p>可惜我不帅...没有女孩喜欢我....</p>
<h1>我想解决单身问题</h1>
<p>可惜我不帅...没有女孩喜欢我....</p>
<h1>我想解决单身问题</h1>
<p>可惜我不帅...没有女孩喜欢我....</p>

Css代码如下:

h1:before{content:counter(mycounter)".";}
h1{counter-increment:mycounter;}

效果如下:

浏览器支持程度:ie8+,chorme,firefox等;

3. 在项目编号中追加文字;

HTML代码还是如上

css代码如下:

h1:before{content:"第"counter(mycounter)"章"".";}
h1{counter-increment:mycounter;}

效果如下:

我们还可以指定编号的样式,我想让颜色变为红色,字体大小为18px,如下代码:

h1:before{content:"第"counter(mycounter)"章"".";color:red;font-size:18px;}h1{counter-increment:mycounter;}

效果如下:

指定编号种类

使用before选择器或者after选择器中的content属性,我们不仅可以追加数字编号,我们还可以追加字母编号或者罗马数字编号,如下方法指定:

content: counter(计算器名,编号种类)

比如指定大写字母编号时,使用”upper-alpha”属性,指定大写罗马字母时,使用”upper-roman”属性。

如下css代码:

h1:before{content:counter(mycounter,upper-alpha);color:red;font-size:36px;}
h1{counter-increment:mycounter;}
p:before{content:counter(longen,upper-roman);color:blue;font-size:36px;}
p{counter-increment:longen;}

效果如下:

编号嵌套:

可以在大编号中嵌套中编号,可以在中编号中嵌套小编号。如下代码:

<h1>我想解决单身问题</h1>
<h2>可惜我不帅...没有女孩喜欢我....</h2>
<h2>我想解决单身问题</h2>
<h1>可惜我不帅...没有女孩喜欢我....</h1>
<h2>我想解决单身问题</h2>
<h2>可惜我不帅...没有女孩喜欢我....</h2>

Css代码如下:

h1:before{content:counter(mycounter)".";}
h1{counter-increment:mycounter;}h2:before{content:counter(longen);}
h2{counter-increment:longen;margin-left:40px;}

效果如下:

在上面代码中,6个中标题的编号是连续的,如果要将第二个大标题里中标题重新开始编号的话,需要在大标题中使用counter-reset属性将中编号进行重置。如下代码:

h1:before{content:counter(mycounter)".";}
h1{counter-increment:mycounter;counter-reset:longen;}h2:before{content:counter(longen);}
h2{counter-increment:longen;margin-left:40px;}

如下效果:

我们再来看一个复杂一点的多层嵌入的demo,如下:

<h1>大标题</h1>
<h2>中标题</h2>
<h3>小标题</h3>
<h3>小标题</h3><h2>中标题</h2>
<h3>小标题</h3>
<h3>小标题</h3><h1>大标题</h1>
<h2>中标题</h2>
<h3>小标题</h3>
<h3>小标题</h3><h2>中标题</h2>
<h3>小标题</h3>
<h3>小标题</h3>

CSS代码如下:

h1:before{content:counter(mycounter)".";}
h1{counter-increment:mycounter;counter-reset:subcounter;}h2:before{content:counter(mycounter) '-' counter(subcounter)'.';}
h2{counter-increment:subcounter;counter-reset:subsubcounter;margin-left:40px;color:red;}
h3:before{content:counter(mycounter) '-' counter(subcounter) '-' counter(subsubcounter) '.';}
h3{counter-increment:subsubcounter;margin-left:40px;color:blue;}

效果如下:

在字符串两边添加嵌套文字符号

可以使用content属性的open-quote属性值与close-quote属性值在字符串两边添加如:括号,单引号,双引号之类的嵌套文字符号,open-quote属性值用于添加开始的嵌套文字符号,close-quote属性值用于添加结尾的嵌套文字符号。

<h1>括号</h1>
<h2>双引号</h2>
<h3>单引号</h3>

Css代码:

h1:before{content:open-quote;}
h1:after{content:close-quote;}
h1{quotes:"(" ")"}h2:before{content:open-quote;}
h2:after{content:close-quote;}
h2{quotes:"\"" "\""}h3:before{content:open-quote;}
h3:after{content:close-quote;}h3{quotes:'\'' '\''}

截图如下:

其中双引号和单引号需要使用转义字符 “\”进行转义。

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

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

相关文章

18张难以置信的照片,封面这张你就没见过

全世界只有3.14 % 的人关注了爆炸吧知识感谢网络&#xff0c;只要点几下鼠标&#xff0c;就能看到我们以前从未见过的东西——有些甚至是难以置信的&#xff01;鲸鱼的心脏水中的鲨鱼卵幼年的箭鱼萌萌哒世界上最高的棕榈树&#xff0c;简直以为是PS的没见过的话&#xff0c;很容…

.NET 生态系统的蜕变之 .NET 6

.NET 6 是自.NET 4 框架以来生态系统看到的最大版本更新&#xff0c;虽然.NET Core 是2014年开始非常大的一项重大战略举措&#xff0c;但是.NET 6是真正的具有强大动力的非常重要的版本。2021年11月9日即将正式发布的.NET 6, 也许你认为.NET 5才刚刚发布&#xff0c;我才刚开始…

我看你还能坚持多久?!

1 我看你还能坚持多久&#xff01;▼2 依旧是熟悉的配方▼3 到哪儿都不愁工作......▼4 请问&#xff0c;当事喵作何感想&#xff1f;▼5 池塘危险&#xff0c;请勿靠近&#xff01;&#xff08;图源网络&#xff0c;侵删&#xff09;▼6 望周知&#xff01;▼7 实在是无…

Hello Blazor:(13)查找HTML元素对应.razor文件

前言Blazor是基于组件的开发&#xff0c;每个组件都是以一个.razor文件形式存在。当应用程序变得越来越大并且.razor文件的数量和层次结构越来越多时&#xff0c;想很快弄清页面上的HTML元素是由哪个组件生成的&#xff0c;就变得不那么容易了&#xff01;FindRazorSourceFile介…

C++STL之string (转)

在学习cSTL中的string&#xff0c;在这里做个笔记&#xff0c;以供自己以后翻阅和初学者参考。 1&#xff1a;string对象的定义和初始化以及读写 string s1; 默认构造函数&#xff0c;s1为空串 string s2(s1); 将s2初始化为s1的一个副本 string s3("valuee");…

当年的毒王熊猫烧香,现在怎么样了?

全世界只有3.14 % 的人关注了爆炸吧知识放假&#xff0c;小编来到了远在73公里之外的天后宫&#xff0c;终于是了了本命年的一桩心事。回想上一个本命年&#xff0c;当时小编还是沉迷扫雷和蜘蛛纸牌的孩子...但当时却发生了一件令我很不爽的事——“熊猫烧香”席卷全国&#xf…

$query php,phpQuery让php处理html代码像jQuery一样方便

简介如何在php中方便地解析html代码&#xff0c;估计是每个phper都会遇到的问题。用phpQuery就可以让php处理html代码像jQuery一样方便。DEMO我下的是onefile版&#xff1a;phpQuery-0.9.5.386-onefile.zip然后在项目中引用。html文件test.html&#xff1a;Spiderman City Driv…

那个成人总会遇到的小问题……

结语超模君就问问&#xff1a;我还有机会10万&#xff0b;吗&#xff1f;&#xff08;溜了溜了&#xff09;莱布尼茨德国数学家莱布尼茨&#xff0c;被后人誉为“百科全书式的天才”&#xff0c;他的研究涉及逻辑学、力学等40多个领域。他创建了数学理论&#xff1a;微积分学。…

java继承接口和泛型,JavaSE习题 继承接口和泛型

问答题&#xff1a;1.子类在什么情况下可以继承父类友好成员&#xff1f;答&#xff1a;在同一个包内2.子类通过怎样的方法可以隐藏继承的成员变量&#xff1f;答&#xff1a;声明一个与父类相同变量名的成员变量3.子类重写继承的方法原则是什么&#xff1f;答&#xff1a;保证…

Github CodeSpaces 使用及定制化

Github CodeSpaces 使用及定制化IntroGithub 最近推出了很多令人兴奋的新功能&#xff0c;最近使用了 Github CodeSpaces&#xff0c;觉得还是挺不错的&#xff0c;CodeSpaces 相当于自己有了一个云主机&#xff0c;真正实现了云端开发&#xff0c;CodeSpaces 和 Github 做了很…

nat+端口转发,使得宿主机secureCRT可以访问vbox里linux虚拟机

为什么80%的码农都做不了架构师&#xff1f;>>> 环境&#xff1a;vbox或者叫vitrualbox连接虚拟机&#xff0c;由于公司内网不能分配IP&#xff08;不知道是不是这个原因&#xff09;&#xff0c;虚拟机用桥接得不到IP&#xff0c;没法实现虚拟机和宿主互相访问&am…

男人可以有多敷衍?

1 现在更流行「红茶女生」&#xff1f;&#xff08;via.白头叔&#xff09;▼2 谢谢&#xff0c;有被冒犯到&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 天使与恶魔▼4 男朋友可以多敷衍&#xff1f;▼5 你的高原红&#xff0c;像极了妈妈的巴掌印&#xff…

linux 内核代码构架图

转载于:https://www.cnblogs.com/kuainiao/archive/2012/12/17/2822384.html

Win11开始大范围推送!

微软宣布 Windows11 现已开始向更多符合最低硬件要求的电脑推送。预计到 2022 年年中&#xff0c;所有符合条件的电脑都可以免费升级到 Windows 11。微软将根据硬件条件、可靠性、使用时间&#xff0c;及其它会影响升级后使用体验的因素&#xff0c;为 Windows 10 电脑分阶段推…

有什么看起来很难,但是其实很简单的题目

全世界只有3.14 % 的人关注了爆炸吧知识做题其实很简单今天超模君一进办公室就感觉充满“杀气”&#xff0c;果不其然&#xff0c;一抬头就看见小天拿着一张纸对着我坏笑。莫非这家伙又要我折纸&#xff1f;拿过纸张一看&#xff0c;虽然密密麻麻的一大堆公式&#xff0c;但我相…

双11,2分钟狂挣20亿的神秘大厂,急招.NET!

双11小米开门红&#xff0c;2分钟不到突破20亿&#xff0c;于是机智的我又去逛了下小米的招聘官网&#xff1a;招5年左右.NET&#xff0c;35k左右&#xff0c;14薪&#xff0c;要求WPF和自动化&#xff0c;真香&#xff01;回首牛年2个跳槽季&#xff0c;招WPF的大厂太多了&…

炸了!刚刚数学家获得了2020年诺贝尔物理学奖!没想到诺奖也能蝉联.......

全世界只有3.14 % 的人关注了爆炸吧知识就在刚刚&#xff0c;万众瞩目的2020年诺贝尔奖物理学奖获得者确定了&#xff01;他们就是——天体物理学家&#xff08;该领域连续两年获得诺奖&#xff09;物理学奖得主罗格彭罗斯爵士&#xff08;Roger penrose&#xff09;&#xff0…

Envoy实现.NET架构的网关(五)集成Redis实现限流

.NET网关与Gateway实战-Envoy与kong课程什么是限流限流即限制并发量&#xff0c;限制某一段时间只有指定数量的请求进入后台服务器&#xff0c;遇到流量高峰期或者流量突增时&#xff0c;把流量速率限制在系统所能接受的合理范围之内&#xff0c;不至于让系统被高流量击垮。而E…

使用 Daynamic 动态添加属性

所谓的Dynamic 动态类型&#xff0c;页面也要是动态的&#xff08;强撸&#xff09; 很简单的 直接上代码&#xff1a; //案例一 DynamicpersonCollection new ObservableCollection(); for (var i 0; i < 10; i) { dynamic p new ExpandoObject(); ((IDictionary<str…

豆瓣9分+纪录片,每一部都美到窒息......

全世界只有3.14 % 的人关注了爆炸吧知识自然类的纪录片一直是BBC的金字招牌&#xff0c;制作精良的纪录片&#xff0c;不仅能让孩子享受视觉的艺术&#xff0c;还能通过独特的视角去解读大自然&#xff0c;真正激发出孩子探索世界的热情。也适合大人影迷们在看了N部电影后视觉疲…