html 垂直居中一般用什么意思,html – 什么使元素上的文本垂直居中?
我知道这是几岁,但是在为项目编写一个重置样式表时,我会在进行一些调查后添加我的想法。
注意**这是基于浏览Firefox源代码,因为它是最简单的获取和阅读。然而,基于其他浏览器中的类似行为,实现可能相似。
首先,这里的主要问题是< button>元素 – 至少在Firefox中 – 内部元素之间构建了< button>标签是它的孩子。在Firefox中,它被称为moz-button-content,并不是可以通过CSS达到的东西,并且已设置为显示块而不继承按钮的高度,您可以在useragent stylesheet中看到此样式声明
因为您不能影响此元素上的任何样式,您将被迫在< button>上添加样式。标签。这导致第二个问题 – 浏览器是hard coded to vertically position内容的按钮。
考虑到这两个问题,您可以开始看到按钮如何强制内容居中,考虑:
tag
+------------------------+ ^
| button extra space | |
| | |
+------------------------+ |
|| ::moz-button-content || | button height
|| display: block; || |
+------------------------+ |
| | |
| button extra space | |
+------------------------+ v
如果你给按钮一个高度 – 像你的小提琴的48px,文本将会居中,因为moz-button-content元素是显示块,只有内容的高度(很可能是内容的行高)默认情况下),当放在另一个元素旁边时,会得到这样的行为:
* {
box-sizing: border-box;
margin: 0;
border: 0;
padding: 0;
font-family: san-serif;
background: none;
font-size: 1em;
line-height:1;
vertical-align: baseline;
}
button, a {
height: 3em;
}
button {
background: red;
}
a {
display:inline-block;
background: green;
}
Button content
Link Content
This bug和this bug在Firefox问题跟踪器是关闭,我可以找到任何实际记录的错误。但是线程给人的印象是,尽管没有出现任何实际的规范,但浏览器已经以这种方式实现了这一点,因为其他浏览器正在这样做“
如果您真的想要更改默认行为,则可以解决问题,但根据实现情况,它不能完全解决问题和YMMV问题。
如果插入包装器< span>使用display:block作为按钮的唯一子项,将所有内容放在其中,您可以使用它来跳过moz-button-content元素。
您将需要使这个< span>元素具有height:inherit,因此它正确地填充了按钮的高度,然后将正常的按钮样式添加到< span>相反,您将基本获得所需的行为。
* {
box-sizing: border-box;
margin: 0;
border: 0;
padding: 0;
font-family: san-serif;
background: none;
font-size: 1em;
line-height:1;
vertical-align: baseline;
}
button, a {
height: 3em;
}
button {
background: red;
}
button::-moz-focus-inner {
border: 0;
padding: 0;
outline: 0;
}
button > span {
display: block;
height: inherit;
}
a {
display:inline-block;
background: green;
}
button.styled > span , a.styled{
padding: 10px;
background: yellow;
}
Button content
Link Content
Button content
Link Content
还有一点值得一提的是appearance的CSS4规则(还没有提供):
虽然这不是一个可行的选择(截至1月5日)。有一个建议,重新定义CSS4草案中的外观规则,可能实际上做正确的事情,删除浏览器做出的所有假设。我只提到它的完整性,因为它可能在未来变得有用。
更新 – 30/08/2016您应该实际使用< span>而不是< div>,因为div对于< button>不是有效的孩子元素。我已经更新了答案以反映这一点。
html 垂直居中一般用什么意思,html – 什么使元素上的文本垂直居中?相关推荐
- html文本纵向居中,css使a标签内文本垂直居中
css使a标签内文本垂直居中 a标签属于行内元素,默认情况下是不支持设置宽高的,仅依靠内容来"撑大自己".这时我们需要用css的display属性并且值设置为block即可.这么设 ...
- css如何设置文本垂直居中显示,css中怎么设置文本居中?css文本垂直居中的设置方法...
在网页设计的过程中,有时候可能为了布局美观可能需要让文本居中,那么,怎么设置文本居中呢?本篇文章将给大家介绍关于css设置文本垂直居中的方法. 首先我们要知道通过css实现元素的水平居中较为简单:对文 ...
- android html文字垂直居中,Android 浏览器文本垂直居中问题
本文作者:IMWeb ShiJianwen 未经同意,禁止转载 问题描述 在开发中,我们常使用 line-height 属性来实现文本的垂直居中,但是在安卓浏览器渲染中有一个常见的问题,就是对于小于1 ...
- 让文本垂直居中的几个方法
一.使用line-height(适用于知道高度,一行文字) 让line-height和height一样高,可使文本垂直居中. 二.设置上下padding 三.通过table .testdiv {hei ...
- CSS3 Flexbox轻松实现元素的水平居中和垂直居中
网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点,而Flex是刚出来不久的东西而已,为了方便说明,赶上新技 ...
- 子元素个数不定的垂直居中布局
平时需要'子元素个数不定的垂直居中'的场景应该不少见吧,像下面这样的效果: 直接上代码: <!DOCTYPE html> <html> <head lang=" ...
- Aspose.Words操作Word.PDF,让图片和文本垂直居中,水平居中解决方案
Aspose.Words操作Word.PDF,让图片和文本垂直居中,水平居中解决方案 参考文章: (1)Aspose.Words操作Word.PDF,让图片和文本垂直居中,水平居中解决方案 (2)ht ...
- html里面行高的原理,CSS行高(line-height)及文本垂直居中原理
在CS多现业讲进行效通近年有务这行定果过近年有S中,line-height 属性设置两段段文本之间的距离,也就是行高,如果我们把一段文本的line-height设置为父容器的高度就可以实现文本垂直居中 ...
- css行高(line-height)及文本垂直居中原理
css行高(line-height)及文本垂直居中原理 一.行高的定义 标准定义:两行文字基线之间的距离. 那么什么是基线? 基线是在英文字母中用到的一个概念,我们刚学英语的时使用的那个英语本子每行有 ...
最新文章
- 链表-回文链表(复制+双指针法)
- 关于第十五届全国大学生智能车竞赛 STC 单片机
- lua学习笔记之字符串
- sizeof()浅解
- JVM之垃圾收集器回收种类
- python模块化编程_什么是模块,Python模块化编程(入门必读)
- 要写related_name的两种情况
- 怎么在html中加横条,如何在HTML中插入一行?html横线标签hr全新讲解
- matlab绘图和python绘图
- ps 转换透明 背景图
- c++直角空心三角形_压轴题中对三角形中位线的另类诠释
- 如何预防高层小区电气火灾的发生-Susie 周
- 3.10Hello,C语言君
- C++大作业--班级同学信息管理系统
- git忽略已加入版本控制的文件
- 圆形图片(个人头像)
- 服务器测试之linux下RAID/HBA管理命令汇总
- IBM MQ通道接收端绑定步骤
- 电子计算机绘制地图的引进,简述Adobe Illustrator地图编制的方法
- 显示连接adms服务器断开,ADMS20常见问题及解答.doc