css文本垂直居中的实现
本案例已经有新的比较简便的解决方案,可以直接采用 vertical-align:middle 样式对行内元素进行垂直居中布局,详见:
微信小程序开发——如何让商品标题类文本根据内容长度垂直居中。
以下方案涉及到操作dom,需要进行计算,总归是会对页面渲染会有一定影响的,不建议使用,仅供学习研究。
前言:
对于文本居中,CSS样式中有text-align:center来实现文本的水平对齐居中(也就是垂直居中),但是并没有垂直方向的居中样式。
通常来说,对于文本的展示要不就是全部展示,要不就是指定行数省略展示。
对于指定行数省略展示,展示不同行数就需要设置不同的高度。但是如果文本容器高度固定,需要根据文本内容展示一行或两行,又要做到垂直方向居中,那这个单纯依靠CSS是无法做到的了:


如上图,商品标题部分有固定宽高的背景图片,所以商品标题的高度也就是固定的了。需求有点变态,但变态的需求也是技术进步的一大动力。
解决方案:
使用原生js获取文本容器的高度,然后根据容器高度调整容器样式,这样就能实现垂直方向居中了。
示例代码:
定义需要使用的样式——根据需求,确定文本最多显示2行,再多就进行省略隐藏:
/*需要显示两行文本的样式*/
.ellipsis_mul {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp:;
padding-top: 10px !important;
height:50px;
}
文本容器:
<span>1元购买</span>{{goods_name}}
</p>
注:文本容器中有其他标签,但是不影响(前同事写法,文本内容建议直接放到标签中,尽量不要和标签同级编写)
<p id="goodTitleBox">
脚本(vue框架):
export default {
name: "goodsDetail",
......
updated() {
var ele = document.getElementById("ellipsis_mul")
if(ele.clientHeight > 60 && ele.className.indexOf("ellipsis_mul") < 0) {
ele.className = 'ellipsis_mul'
}
}
......
}
注:
- 文本内容是动态获取的,所以需要在页面渲染之后才能获取文本容器高度,因此需要在 vue 的 updated 生命周期中进行容器高度判断及样式调整;
- 对于文本容器 clientHeight 的临界值需要根据页面实地获取,可依次对一行或两行进行验证获取容器高度,本例中1行60,2行80,大部分浏览器都相同。这个临界值可能会根据不同大小屏幕而有所不同,所以最好使用谷歌浏览器的模拟器多多验证。特殊情况需要做兼容处理。
- 对文本容器进行样式调整后,又会触发 updated ,所以在对容器高度判断的同时还要确保容器没有进行调整过。
后记:
本例中的方法属于非正式的方法,所以要多进行测试验证,尽可能的做好兼容。
css文本垂直居中的实现的更多相关文章
- CSS 文本垂直居中对齐
文本垂直居中对齐是一个很常见的问题,这里总结一下. 一.容器高度固定,单行文本垂直居中对齐 height:20px; line-height:20px; overflow:hidden; 二.容器高度 ...
- css文本垂直居中
1,一般flexca 2,行高 3,行高加边框或者透明边框
- CSS文本垂直居中显示
<style> .sty1 { width: 300px; height: 200px; background-color: black; text-align: center; colo ...
- css 文本和div垂直居中方法汇总
https://blog.csdn.net/u014607184/article/details/51820508 https://blog.csdn.net/liuying1802028915/ar ...
- css样式设置高度不定文本垂直居中
使用css实现文本垂直居中,对于支持display: table的浏览器来说,是比较容易实现的,只需要对外层div设置为table,内层div设置为table-cell,并设置文本垂直居中即可.但对于 ...
- CSS元素和文本垂直居中
div居中 1.使用绝对定位和负外边距让块级元素垂直居中 要点:必须提前知道被居中块级元素的尺寸,否则无法准确实现垂直居中. <div id="box"> <di ...
- 把简单做好也不简单-css水平垂直居中
44年前我们把人送上月球,但在CSS中我们仍然不能很好实现水平垂直居中. 作者:Icarus 原文链接:http://xdlrt.github.io/2016/12/15/2016-12-15 水平垂 ...
- 五种方法让CSS实现垂直居中
利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法.我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站. 使用 CSS 实现垂直居中并不容易.有些方法在一些浏览器 ...
- CSS实现垂直居中的5种方法
利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法.我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站. 使用 CSS 实现垂直居中并不容易.有些方法在一些浏览器 ...
随机推荐
- [UE4]快速移动,给单位向量加一个力
一.(Vector_End- Vector_Start ).Normalize,获取从起始位置指向目标位置的单位向量. 二.给单位向量乘以一个浮点数,即给向量加一个力,是往向量方向移动 每一帧往目标点 ...
- 【原创】Windows上应用程序报错常用分析方法总结
在日常使用Windows的过程中,经常会遇到应用程序不能正常启动.关闭等使用问题.对于Windows来说,解决这些问题的方法比较多,大多时候我们可以通过百度或谷歌搜索来解决.但更多的时候,我们需要找出 ...
- NOIP 2018 Day1
Fei2Xue@Lian$Tian! 三道原题qwq真的凉 半年前看到有人发说说,梦见省选打开题目,是Please contact lydsy2012@163.com! 没想到一语成谶 大众分300 ...
- springboot学习三:整合jsp
在pom.xml加入jstl <!--springboot tomcat jsp 支持开启--> <dependency> <groupId>org.apache. ...
- 学习使用github
自己尝试了一下用git bash完成了第一次下载与上传,感觉git desktop应该是讲bash某些需要输入代码的工作图形化了,但是因为感觉用起来有些不知所措,所以反倒是用代码的gitbash比较方 ...
- mybatis学习 -每天一记 mybatis insert null 报错
mybatis 插入数据,model的属性存在null,插入报错 在使用mybatis 进行insert时,如果字段值存在null的情况,会出现插入失败的情况,解决方案: 如果使用spring boo ...
- 《深入理解java虚拟机》读书笔记——垃圾收集与内存分配策略
可回收判定两种算法 引用计数法(Reference Counting):引用为0时可回收. 可达性分析法(Reachability Analysis): 从GCRoots对象到这个对象不可达. GCR ...
- HBASE分布式集群搭建(ubuntu 16.04)
1.hbase是依赖Hadoop运行的,因此先确保自己已搭建好Hadoop集群环境 没安装的可以参考这里:https://www.cnblogs.com/chaofan-/p/9740408.html ...
- Maven 打包项目 部署到服务器 重启服务 插件
1.maven插件wagon-maven-plugin自动部署远程Linux服务器 (http://xxgblog.com/2015/10/23/wagon-maven-plugin/) <p ...
- spring boot 2.0.4 Redis缓存配置
spring boot 2 使用RedisTemplate操作redis存取对象时,需要先进行序列化操作 import org.springframework.cache.CacheManager; ...