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

注意**这是基于浏览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. 问价已损坏 文件服务器,由于检查点文件 (.chk) 丢失或已损坏,无法打开数据库...
  2. 怎样打开mysql进程数_mysql查看最大打开进程数
  3. 为QT的Webkit 编写插件
  4. bootstrap-表格-普通表格
  5. VMware虚拟机里centos7下安装mysql5.6并授权远程连接Navicat
  6. LeetCode:路径总和II【113】
  7. docker安装vim命令
  8. 基于React技术栈打造炫酷个人简历实战-郭永峰-专题视频课程
  9. android7+预装+卸载,国内安卓用户救星:7月1日起,手机预装App必须支持卸载!
  10. android9 三星 港版,三星S10+官方港版安卓9完整固件升级更新包:TGY-G9750ZHU1ASF1
  11. mysql 用户 多次登录失败_限制用户登录失败次数,在连续登陆失败10次后冻结该用户。...
  12. 解决gitlab内置node_exporter提供外部prometheus使用
  13. mysql high priv_MYSQL新特性secure_file_priv对读写文件的影响
  14. 深入浅出java并发编程(线程池)
  15. 编写函数,对传送过来的三个数选出最大值和最小值,并通过形参传回调用函数
  16. 使用Tycho构建OSGi插件项目
  17. thinkphp6 框架源码分析
  18. 自考笔记-创业学02(小白粗写)
  19. ACPI Tables
  20. 把一切看淡,心就不累了

热门文章

  1. 百度云Windows Git-2.25.1-64-bit.exe下载
  2. Eu.org免费域名已经通过了,并转到CloudFlare解析
  3. filepath:处理文件路径的一把好手
  4. 【笔记】大数据技术之你需要了解的常识(一)
  5. constructed play combin all by own
  6. swfupload提示“错误302”的解决方法
  7. Vim中设置空格(space)代替tab键
  8. 【基础算法 】文本相似度计算
  9. Disruptor(3)
  10. 小程序 获取带参数太阳码的参数,并解析出来(wxacode.getUnlimited)