php excel 垂直居中,完美实现文字图片水平垂直居中

垂直居中是一个历史悠久的大问题,要做到兼容所有浏览器少不了要花点时间,网上也流传了很多解决方案,但没发现比我现在用的方案更完美,至少在我的项目是如此。

项目中要用到垂直居中而碰到兼容性问题的,一般都是以下几种情况:

换行文字垂直居中

图片垂直居中

以上都是在固定宽高的容器里垂直居中,不然的话margin,padding便可实现。

解决垂直居中无非就从几个方面入手

利用行高等于容器高度

模拟表格单元格特性

定位布局

css3的display:box

换行文字垂直居中

结合表格单元格特性和定位来实现

/* 换行文字垂直居中 */

.vc-font1 {

border: 1px solid black;

width: 200px;

height: 200px;

display: table-cell;

vertical-align: middle;

text-align: center;

}

/* 兼容IE6、7 */

*+html .vc-font1 {

height: auto;

min-height: 200px;

}

.vc-font1 .vc-fix {

*position: relative;

*top: 50%;

*left: 50%;

*width: 100%;

}

.vc-font1 .vc-inner {

*position: relative;

*top: -50%;

*left: -50%;

}

换行文字垂直居中,兼容所有浏览器

当文字高度超出容器时,识别table-cell的浏览器容器会自适应,此时容器的height属性相当于min-height,为了达到所有浏览器效果一致,容器的height还要Hack一下。

缺点:增加了多余的标签

利用行内块vertical-align:middle来实现

.vc-font2 {

border: 1px solid black;

width: 200px;

height: 200px;

text-align: center;

overflow: hidden;

}

.vc-font2 .vc-inner {

display: inline-block;

vertical-align: middle;

}

.vc-font2 .vc-fix {

display: inline-block;

width: 0;

height: 100%;

line-height: 100%;

vertical-align: middle;

visibility: hidden;

}

换行文字垂直居中,兼容所有浏览器

vc-inner和vc-fix必须是行内元素,vc-inner加上vc-fix的宽度不能超过容器宽度,行内块换行时会多出空隙(容器font-size: 0可去除,但这里不适用),所以这两个标签不能换行。

缺点:增加了多余的标签(硬伤),标签不能换行且必须是行内元素。

固定宽高图片垂直居中

前面提到的换行文字垂直居中的方法对于固定宽高图片垂直居中也是适用的

利用定位(原理跟方法1类似)

.vc-img1 {

border: 1px solid black;

width: 200px;

height: 200px;

position: relative;

}

.vc-img1 img {

width: 100px;

height: 100px;

position: absolute;

top: 50%;

left: 50%;

margin: -50px 0 0 -50px;

}

2d0c01dce97c5c71ede59ed292058011.png

既然已经确定了图片的宽高,毫无疑问使用这种方法就没有兼容性的问题出现了

缺点:图片宽高必须固定,以便计算图片margin的负值。

行高等于容器高度

.vc-img2 {

border: 1px solid black;

width: 200px;

height: 200px;

line-height: 200px;

_font-size: 200px;

text-align: center;

}

.vc-img2 img {

width: 100px;

height: 100px;

vertical-align: middle;

}

/*hack for ie7 字体要设置多大,自个慢慢调整*/

*+html .vc-img2 {

font-size: 180px;

}

2d0c01dce97c5c71ede59ed292058011.png

我以为设置了行高等于容器高度就完事了,依然还是碰到了问题,IE6不买账没效果,IE7也闹别扭,在标签同一行情况下失效。

这里顺便推荐一个很好用的占位图网站,好奇的童鞋猛戳链接吧 :)

缺点:感觉这样写不爽

图片自适应容器宽高垂直居中

这个方法很简单,就是在方法4的基础上改一下图片的宽高改成max-width,max-height,代码如下:

.vc-img3 {

border: 1px solid black;

width: 200px;

height: 200px;

line-height: 200px;

text-align: center;

}

.vc-img3 img {

max-width: 150px;

max-height: 150px;

vertical-align: middle;

}

/*hack for ie7 字体要设置多大,自个慢慢调整*/

*+html .vc-img3 {

font-size: 180px;

}

很明显这是不兼容IE6,要兼容IE6恐怕就要写JS。对此,我只想说,让IE6见鬼去吧!

CSS3的display:box

最后给出一种高端大气上档次的方法。

.vc-css3 {

border: 1px solid black;

width: 200px;

height: 200px;

text-align: center;

display: -webkit-box;

-webkit-box-align: center;

-webkit-box-pack: center;

display: -moz-box;

-moz-box-align: center;

-moz-box-pack: center;

display: -o-box;

-o-box-align: center;

-o-box-pack: center;

display: -ms-box;

-ms-box-align: center;

-ms-box-pack: center;

display: box;

box-align: center;

box-pack: center;

}

.vc-css3 img {

width: 100px;

height: 100px;

}

2d0c01dce97c5c71ede59ed292058011.png


想居中就居中,爽啊!

很完美有木有?如果IE能支持的话,又是该死的IE...

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

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

相关文章

cd短是什么意思_每日命令|pwd、cd

01 命令简介上回说到《每日命令 | ls》,今天我们来说一说pwd命令和cd命令。pwd命令——返回当前工作目录名称。cd命令——改变工作目录。什么是工作目录?举个例子:我在北京上班,那我的工作地点就是北京;后来我到上海上…

sql 查询表结构_SQL查询语句的完整结构解析

SELECT语句完整的句法模板:SELECT [DISTINCT] FROM [ JOIN ON ][WHERE ][GROUP BY [HAVING ]][ORDER BY ,...]上述句法模版中的[ ]表示该部分可选。SELECT整个语句的执行过程为:(1) 读取FORM子句中表、视图的数据。(2) 存在连接表时&…

php foreach ,PHP学习之foreach循环时加符号的说明

本文主要内容是关于PHP的foreach循环时加&符号的说明,感兴趣的朋友可以了解一下。foreach时加&符号:遍历的同时改变原数组即修改数据或者增加数据。$arr [a, b, c];foreach ($arr as $key > &$value) {$value $value . 111;}echo json_…

基于matlab实现的云模型计算隶属度,基于MATLAB实现的云模型计算隶属度

”云”或者’云滴‘是云模型的基本单元,所谓云是指在其论域上的一个分布,可以用联合概率的形式(x, u)来表示云模型用三个数据来表示其特征期望:云滴在论域空间分布的期望,一般用符号Εx表示。熵:不确定程度…

notebook python 内嵌 数据库_python数据分析:在jupyter notebook上使用pythonSQL做数据分析...

python数据分析:在jupyter notebook上使用python&SQL做数据分析发布时间:2019-01-14 21:14,浏览次数:1143, 标签:pythonjupyternotebookSQL类似于在jupyter上使用R语言,同样可以使用SQL语句:详细见gith…

php优化上百次foreach,php – 优化数千个项目的foreach

我在一组25,000个结果中运行下面的代码.我需要优化它,因为我达到了内存限制.$oldproducts Oldproduct::model()->findAll(); /*(here i have 25,000 results)*/foreach($oldproducts as $oldproduct) :$criteria new CDbCriteria;$criteria->compare(someid, $oldprodu…

二陈丸配什么吃不上火_宝妈一个人带孩子是什么感觉?前三种场景,不知道是怎么熬过来的...

导语:很多人认为一个家庭主妇很轻松,每天就带带孩子,其他什么都不需要做,远远没有那些人说的那么辛苦,无论是老公还是很多婆婆都认为是在家享福呢,经常就会甩出一句话“每天不就带个孩子吗?至于…

php怎么分割页面,将一个页面分成多个html文件(静态html分割页面)

静态html分割页面,达到类似PHP等动态页面的include引入页面效果。用html把首页分成三个文件web.png在PHP、JSP等动态页面开发中,页面里引入其它页面只需include()进来就可以实现页面的分离。如果用HTML,也是可以实现页面的分割的。两种方法&a…

zbar扫描无法近距离扫码_生意好时最怕收银出故障,这几个扫码枪的常见问题你一定要知道...

文|杭州丰收收不怕生意不够好,就怕生意好时收银出故障。这几天丰收收经常接到询问,说自己商铺所在的位置信号非常不好,很多客户等了很久没法付款,索性就不买了。看着上门的生意就这么走了,心里很不是滋味。遭遇这种经历…

matlab zigzag算法,ZIGZAG扫描的MATLAB实现

用MATLAB实现MPEG中的 ZIG-ZAG 扫描。觉得有点研究价值,实现的方法也很巧妙。下面给一个参照MPEG提供的方法:===function bzigzag(a)% 这是参照 University of California 提供的 MPEG 源代码的基础上编制的。% Copyri…

python工业自动化仿真_ABAQUS 中基于 Python 脚本语言开发实现仿真自动化操作

进行 ABAQUS 开发编程前,首先需要明白 ABAQUS 有限元分析思路和基本流程,以及 Python 基本语法和面向对象编程有基本的认识,下面是 Python 和 ABAQUS 的开发模板:# 注释说明本程序需要实现的项目内容和功能##--------------------…

你觉得外观模式和代理模式的联系和区别是什么?_GoF23种设计模式

UML泛化(继承非抽象类):带空心三角形的直线表示实现(继承抽象类,类实现接口):带空心三角形的虚线表示依赖:类与类之间最弱的关系,依赖可以简单的理解一个类使用了另一个类…

java url headers,Java CloseableHttpResponse.getHeaders方法代码示例

import org.apache.http.client.methods.CloseableHttpResponse; //导入方法依赖的package包/类/*** Makes a HTTP request to the given URL using the given request body,* parameters and HTTP headers. The parameters are used as URL parameters,* but if theres a para…

python tvtk库_PyCharm创建虚拟环境 和 TVTK库的安装

注:示例系统环境:Windows10 64位 Anaconda3:昨天安装TVTK库遇到些麻烦,当时随便将库下到个文件夹安装后(没找到VENV文件夹...),进行测试:from tvtk.tools import tvtk_doc结果显示No module named ‘trait…

反注入技术:防范非法 Call 调用的探讨

DLL 注入是一种常见的技术,用于向目标进程注入外部的动态链接库(DLL),以执行某些特定的操作。这种技术在恶意软件、游戏作弊等场景中被广泛使用,因此,研究和实施一些反注入技术对于提高应用程序的安全性是至…

python中的字体英文名_获取中文字体的英文名字

(方法在分割线后面,前面叙事)今天用了很久电脑,突然就觉得看着Windows下Chrome的字体觉得很不舒服,跟Mac下的差太远了,于是就开始折腾怎么设置浏览器字体。先讲一下流程,我的操作方案是:下载自己喜欢的字体…

java汉字如何通过字节传输,求助,java中怎么用字节流读写汉字

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import java.io.*;public class ReadAndWrite{public static void main(String args[]){FileInputStream fin;FileOutputStream fout;int ch;try{int b;fin new FileInputStream(FileDescriptor.in);fout new FileOutputStream(F…

python 元类的call总结_Python 类与元类的深度挖掘 I【经验】

上一篇介绍了 Python 枚举类型的标准库,除了考虑到其实用性,还有一个重要的原因是其实现过程是一个非常好的学习、理解 Python 类与元类的例子。因此接下来两篇就以此为例,深入挖掘 Python 中类与元类背后的机制。翻开任何一本 Python 教程&a…

tp5 php跨域,TP5.1解决跨域

TP5.1解决跨域博客说明文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!介绍在前后端分离开发的时候就会遇到跨域的问题,在本地调试的时候可能不…

python中的pow怎么使用_python中的pow函数怎么用

描述pow() 方法返回 xy(x的y次方) 的值。语法以下是 math 模块 pow() 方法的语法:import mathmath.pow( x, y )内置的 pow() 方法pow(x, y[, z])函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z注意:…