我知道这是几岁,但是在为项目编写一个重置样式表时,我会在进行一些调查后添加我的想法。

注意**这是基于浏览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 – 什么使元素上的文本垂直居中?相关推荐

  1. html文本纵向居中,css使a标签内文本垂直居中

    css使a标签内文本垂直居中 a标签属于行内元素,默认情况下是不支持设置宽高的,仅依靠内容来"撑大自己".这时我们需要用css的display属性并且值设置为block即可.这么设 ...

  2. css如何设置文本垂直居中显示,css中怎么设置文本居中?css文本垂直居中的设置方法...

    在网页设计的过程中,有时候可能为了布局美观可能需要让文本居中,那么,怎么设置文本居中呢?本篇文章将给大家介绍关于css设置文本垂直居中的方法. 首先我们要知道通过css实现元素的水平居中较为简单:对文 ...

  3. android html文字垂直居中,Android 浏览器文本垂直居中问题

    本文作者:IMWeb ShiJianwen 未经同意,禁止转载 问题描述 在开发中,我们常使用 line-height 属性来实现文本的垂直居中,但是在安卓浏览器渲染中有一个常见的问题,就是对于小于1 ...

  4. 让文本垂直居中的几个方法

    一.使用line-height(适用于知道高度,一行文字) 让line-height和height一样高,可使文本垂直居中. 二.设置上下padding 三.通过table .testdiv {hei ...

  5. CSS3 Flexbox轻松实现元素的水平居中和垂直居中

    网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点,而Flex是刚出来不久的东西而已,为了方便说明,赶上新技 ...

  6. 子元素个数不定的垂直居中布局

    平时需要'子元素个数不定的垂直居中'的场景应该不少见吧,像下面这样的效果: 直接上代码: <!DOCTYPE html> <html> <head lang=" ...

  7. Aspose.Words操作Word.PDF,让图片和文本垂直居中,水平居中解决方案

    Aspose.Words操作Word.PDF,让图片和文本垂直居中,水平居中解决方案 参考文章: (1)Aspose.Words操作Word.PDF,让图片和文本垂直居中,水平居中解决方案 (2)ht ...

  8. html里面行高的原理,CSS行高(line-height)及文本垂直居中原理

    在CS多现业讲进行效通近年有务这行定果过近年有S中,line-height 属性设置两段段文本之间的距离,也就是行高,如果我们把一段文本的line-height设置为父容器的高度就可以实现文本垂直居中 ...

  9. css行高(line-height)及文本垂直居中原理

    css行高(line-height)及文本垂直居中原理 一.行高的定义 标准定义:两行文字基线之间的距离. 那么什么是基线? 基线是在英文字母中用到的一个概念,我们刚学英语的时使用的那个英语本子每行有 ...

最新文章

  1. 链表-回文链表(复制+双指针法)
  2. 关于第十五届全国大学生智能车竞赛 STC 单片机
  3. lua学习笔记之字符串
  4. sizeof()浅解
  5. JVM之垃圾收集器回收种类
  6. python模块化编程_什么是模块,Python模块化编程(入门必读)
  7. 要写related_name的两种情况
  8. 怎么在html中加横条,如何在HTML中插入一行?html横线标签hr全新讲解
  9. matlab绘图和python绘图
  10. ps 转换透明 背景图
  11. c++直角空心三角形_压轴题中对三角形中位线的另类诠释
  12. 如何预防高层小区电气火灾的发生-Susie 周
  13. 3.10Hello,C语言君
  14. C++大作业--班级同学信息管理系统
  15. git忽略已加入版本控制的文件
  16. 圆形图片(个人头像)
  17. 服务器测试之linux下RAID/HBA管理命令汇总
  18. IBM MQ通道接收端绑定步骤
  19. 电子计算机绘制地图的引进,简述Adobe Illustrator地图编制的方法
  20. 显示连接adms服务器断开,ADMS20常见问题及解答.doc

热门文章

  1. 尺度空间 (Scale Space)
  2. oracle查询表唯一索引,oracle查询索引(oracle查看表索引)
  3. 安全色谱与Web配色技巧
  4. 技术问题epic无法启动 任务栏不断的闪 打不开
  5. Apk打包、安装、签名
  6. Future和Callback
  7. package.json和package-lock.json到底是什么?
  8. Dockerfile示例
  9. 素食者进行低碳饮食的最佳方法
  10. 亚马逊商品销量在这个假日季再度刷新纪录——2019“网购星期一”成为公司有史以来销售最旺的一天