怎样让一行中的 文字 input输入框 按钮button它们在同一个高度上? 它们中的文字 是 垂直居中对齐

很多时候, 文字和 input和button它们的 顶端是在同一条先上, 但是并不是 垂直居中对齐, 这个 就不好看.

其时有很多理论, 讲的也很复杂, 说什么文本 的top, middle ,baseline , bottom 四根线, 等等 那些我们都不管, 可以这样简单的理解:

  1. 把文本/input输入框/button等 都看作是放在 各自一个盒子中的东西, 默认的时候: 当它们在同一行中时, 这些盒子的顶端是对齐的, 即顶端是在同一根线上, 顶端是对齐的, 是盒子不一定是文本顶端对齐; 而且各自盒子 里面的东西(文字) 是在各自盒子的垂直中间的
  2. 但是, 问题的根本就在于 这些盒子的 高度 是不同的! 你可以想象一下, 不同高度的盒子, 盒子顶端放在一样高度时, 里面的东西都处于盒子的一半高度时, 盒子里的东西肯定不在同一个高度, 肯定是高的高, 低的低
  3. 那要解决盒子里面的东西(即各自的文字) 在同一个高度, 方法就是 : 让这些盒子的 高度都一样! 各个盒子的高度设置方法是:
  • 对于单纯的文字, 所在的容器(盒子), 高度的设置就是设置 文本 的 行高! 即 line-height: .....px
  • 对于input和按钮, 它们的高度, 没有具体的设置方法, 那就是在 firefox的 调试器的 相应html元素的 css的 computed标签页里面可以 得到的: 基本就是 = 自身文本height + 上下padding的和. 你可以根据相应元素的 css值计算, 也可以根据computed上的值 直观的相加得到
  • 比如 bs的按钮的高度就是: 按钮中的文字的高度是 20px; 按钮内文字还有上下padding是6px, 所以按钮的高度就是 32px;
    所以, 设置 文本所在的 span的 行高为 32px, 就刚好能保证 文本和button(实际上button中的文字)在(基本上, 不保证绝对)同一高度,就是在高度上基本垂直居中对齐.
  • 所以说, bs中的行高1.428, 基本上就是 20px, bs的文档中说的, Bootstrap 将全局 font-size 设置为 14px,line-height 设置为 1.428。这些属性直接赋予 <body> 元素和所有段落元素。另外,<p> (段落)元素还被设置了等于 1/2 行高(即 10px)的底部外边距(margin) 它说1/2行高(即10px), 就说明默认 的 行高是 20px;
    其他高度尺寸 直接从调试器computed上看.

原文地址:https://www.cnblogs.com/bkylee/p/12384783.html

时间: 2024-10-07 00:58:47

怎样让一行中的 文字 input输入框 按钮button它们在同一个高度上? 它们中的文字 是 垂直居中对齐的相关文章

angularjs中的验证input输入框只能输入数字和小数点

百度的资料:自己记录看下 把js的验证方法改成angular可使用的方法 AngularJS文件的写法: $scope.clearNoNum = function(obj,attr){ //先把非数字的都替换掉,除了数字和.obj[attr] = obj[attr].replace(/[^\d.]/g,"");//必须保证第一个为数字而不是.obj[attr] = obj[attr].replace(/^\./g,"");//保证只有出现一个.而没有多个.obj[a

iOS中 H5的input输入框focus()无法自动拉起键盘(解决方法)

ios的hybird APP 无法使用focus()获取焦点和键盘的问题. 解决方案 原来,在App的配置文件(config.xml),里面默认会有一句 1 <preference name="KeyboardDisplayRequiresUserAction" value="true" /> 这里面的大概意思就是,键盘的显示需要用户去触发,而且是设置为true的!!! 那么下面你们知道怎么做了吧,只需要把value的值改为false,一切都解决了. 1

android 带文字阴影的按钮

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:ori

js中confirm揭示三个按钮“是”“否”“取消”

js中confirm提示三个按钮"是""否""取消" 重载DOM中confirm window.confirm = function(str) {   str=str.replace(/\'/g, "'&chr(39)&'").replace(/\r\n|\n|\r/g, "'&VBCrLf&'");   execScript("n = msgbox('"

bootstarp-table表格中嵌套多个BUTON按钮实现

bootstarp-table表格中嵌套多个BUTON按钮实现 有时我们需要在bootsharp-table表格中嵌套多个按钮,来实现不同的功能,大概界面如下: 实现功能如下: 1:构建表格 中间部分字段已删除. visible: false  该列隐藏,界面不显示 events: operateEvents :给按钮注册事件 formatter: operateFormatter:表格中增加按钮 1 $("#TbRoleList").bootstrapTable({ 2 url: &

HTML中使用javascript解除禁止input输入框代码:

转:表单中Readonly和Disabled的区别 参考资料: disabled和readonly区别: 参考博文1地址:http://blog.csdn.net/symgdwyh/article/details/5342937 两种属性的写法如下: 1.<input type="text" name="name" value="xxx" disabled="true"/> 2.<input type=&qu

input输入框和 pure框架中的 box-sizing 值问题

在使用pureCSS框架的时候,遇到一个问题. input输入框,我给他们设置了宽度和padding值,我发现,在火狐和谷歌上面发现,增加padding值并不会影响最终的宽度,而在IE6 7下则会影响宽度.后来发现是pure框架为输入框设置了box-sizing导致(IE6 7不支持),我得分别设置不同的宽度.  所以,在使用这个框架的时候, 为了统一,应该设置   input[type=text] { box-sizing : content-box; -moz-box-sizing : co

angular input输入框中使用filter格式化日期

最近使用了angular日期选择器,不过需要把选中的日期输出到input输入框中,如果按照默认情况,显示的是时间戳形式的时间,不符合要求,需要把格式变成特定格式,但是input上ng-model上又不能直接使用filter,因此需要一种方法把这里显示的内容格式化. 网上寻找解决方案就是写个directive,具体实例代码如下: JS angular.module('dateRange',[]).directive('dateFormat', ['$filter',function($filter

HTML5移动开发中的input输入框类型

HTML5规范引入了许多新的input输入框类型 在HTML5移动开发中,通过这些新的输入框类型来显示定制后的键盘布局,用户体验更好,更容易填写各种表单 本文中,实测手机为肾4S与米4 数字类型number 定义input类型为type="number"时,iOS显示数字.标点及符号键盘,Android显示拨号键盘.代码如下所示 1 <input type="number" id="number" name="number&quo