您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页css中内联元素无法设置宽高的原因分析和解决办法

css中内联元素无法设置宽高的原因分析和解决办法

来源:华佗小知识

CSS布局中遇到的问题

一、一些行内元素无法设置宽高的问题

(1)到底什么是块级元素,行内元素

块级元素会独占一整行,而行内元素会在一行中一次排列,这和他们的display属性有关

块级元素: dispaly:block;

内联元素: display:inline;

 

(2)块级元素和内联元素的特性

块级元素可以显示的设置其宽高(width,height),在文档流中,从上到下一个接一个的垂直排列。元素之间的距离可以有margin设置。

内联元素在一行中水平排列,显式的设置其宽高无效,只能通过设置其内边距,边框,外边距来调整它们的水平距离。可以通过边框,垂直方向上的内边距来设置内联元素的高度。

 

(3)理解内联元素(行内框)和行框之间的区别

  简单的说。行内框就是所谓的行内元素。行框就是行内框所在的那一行。习惯行内元素的叫法。

  设置行高line-height属性可以增加这个框的高度。切记:修改行内框尺寸的唯一方法就是修改行高,内联元素的边框,内边距,外边距,显示的设置宽高属性无效。

  1、内联元素排列

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>解决行内元素不能设置宽高的问题</title>
 6     <style type="text/css">
 7         div span{
 8 
 9             border: 1px solid #000;
10             width:100px;        /*显示的设置宽高无效*/
11             height: 100px
12         }
13     </style>
14 </head>
15 <body>
16     <div>
17     <span>1</span>
18     <span>2</span>
19     <span>3</span>
20     <span>4</span>
21     <span>5</span>
22     </div>
23 </body>
24 </html>

  2、可以很明显看出,设置width和height属性对内联元素不起任何作用,只有通过设置行内元素的内边距,水平外边距,边框宽度,以及行高,才可以改变其大小。核心代码如下:

<style type="text/css">
        span{
            border: 1px solid #000;
            /*width:100px;        显示的设置宽高无效
            height: 100px;*/
            padding: 20px;    /*设置其上下左右的内边距,行内元素就会被撑开*/
            margin-left: 20px;  /*设置其水平方向上的外边距,元素之间的距离就会被拉开。*/
            margin-top:20px;   /*设置垂直方向上的外边距无效*/
            line-height: 50px;  /*设置行高,也就是行框的高度,影响的行内元素所在的那一整行,元素本身不受影响*/ 
            font-size: 30px;   /*字体大小影响行内元素大小*/
            color:red;
        }
    </style>

由上可以看出,影响行内元素大小和元素之间距离的只有字体大小(font-size),水平方向上的外边距,边框宽窄,以及内边距,不受宽高(width,height)的影响

 

  3、行框包着行内元素(行内框)

   

  外面的框就是行框,设置其line-height属性值就可以增加其高度。行框的高度总是足以容乃它所包含的所有行内框(行内元素)。

 

(4)如何设置行内元素宽高

①将行内元素的dispaly属性设置为block,就可以显示的设置的宽高,但此时行内元素也会独占一行

②将行内元素display属性设置为inline-block,也可以设置宽高,并且此时的行内元素仍然在水平方向上依次排列。但低版本IE浏览器对该属性支持很差(IE8以下)

③将行内元素浮动。浮动(float)必须作用到块级元素上,如果在行内元素上应用该属性,行内元素就会被隐式的转化为块级元素,这时就可以显示的设置宽高了。但浮动会影响其兄弟元素。(浮动会脱离文档流),该方法常常用在表单布局的label属性上,可以设置label属性宽度,从而使Input框垂直对齐。

 

 1 <style type="text/css">
 2         ul{
 3             list-style: none;
 4         }
 5         ul li label{
 6             float: left;        /*将label标签左浮动,此时就被隐式的转换成了inline-block元素,可以设置其宽高,因为它浮动了,左边的input框就会向左移动,直到碰到Label元素边框(设置过宽度之后的边框),只需要设置它们之间的外边距,就可以呈现整齐的效果了*/
 7             width:200px;
 8             text-align: right;
 9             font-size: 20px;
10             /*border: 1px solid #000;*/
11         }
12         ul li{
13             margin: 10px;
14         }
15         ul li input{
16             margin-left: 10px;
17         }
18         ul li button{
19             margin-left: 240px;
20         }
21     </style>
22 </head>
23 <body>
24     <h3>表单设计中内联元素label宽高设置的方法</h3>
25     <div>
26     <form>
27         <ul>
28             <li>
29                 <label for="userName">用户名</label>
30                 <input type="text" name="userName" id=userName>
31             </li>
32             <li>
33                 <label for="userPwd">密码</label>
34                 <input type="text" name="userPwd" id=userPwd>
35             </li>
36             <li>
37                 <label for="userTel">联系方式</label>
38                 <input type="text" name="userTel" id=userTel>
39             </li>
40             <li><button>立即提交</button></li>
41         </ul>
42     </form>
43 </div>
44 </body>

 

通过浮动就可以设置其宽度,就可以呈现出整齐的效果了!

 

参考:精通css高级web标准解决方案

 

转载于:https://www.cnblogs.com/zhouyanlife/p/8675797.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务