img和div宽度不一致问题

今天写代码,遇到一个小问题,我把一张图片放进一个div里,然后没有设置任何的padding和margin,但是发现图片和div的高度不一样,在img的下方出现了3px的空隙。

//html代码
<div><img src="img/test.jpg"></div> //css代码
div{
display: inline-block;
background-color: red;
}
img{
width: 400px;
}

效果如图:很明显能看到图片下面红色背景突出的地方。

审查元素,发现div的高度比img的高度多3px。

通过百度之后了解到产生这个问题的原因:img是一种类似text的元素,在结束的时候,会在末尾加上一个空白符,所以就会多出3px。

而解决这个问题的方法也很简单,把img标签的display属性设置为block就好了。

//css代码
img{
width: 400px;
display:block;
}

效果如图:

li间空隙问题

今天遇到的问题让我想到之前还遇到过的一个问题,当我想让ul的li横向排列时,把li的display的属性设置为inline-block,然后就发现,li之间不能紧挨着,有额外的空隙,通过设置padding和margin为0都不能消除这个间隙。

//html代码
<div>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div> //css代码
div{
display: inline-block;
background-color: #000;
}
ul{
padding: 0;
margin: 0;
}
li{
display: inline-block;
list-style-type: none;
width: 40px;
height: 30px;
background-color: red;
color: #fff;
}

效果图如下:可以清晰看到li之间黑色背景的间隙。

我把margin-right设置为负值-8px之后,间隙才没有了,如下:

通过百度之后,了解到产生这个问题的原因是:浏览器会把inline元素间的空白字符(空格、换行、Tab等)渲染成一个空格。而为了美观。我们通常是一个

  • 放在一行,这导致
  • 换行后产生换行字符,它变成一个空格,占用了一个字符的宽度。

    解决方法也很多:

    • 上面把margin设一个负值就是一种消除间隙的方法。
    • 给li标签设置浮动。
    • 将font-size设置为0,或者将letter-spacing设置为-8px,这种方法会导致其他字符的样式也会受到影响。
    • 还有一种在html代码上做修改,不用修改css的方法。加上注释,消除因换行带来的空白字符。如下:
        <div>
    <ul>
    <li>1</li><!--
    --><li>2</li><!--
    --><li>3</li><!--
    --><li>4</li><!--
    --><li>5</li><!--
    --><li>6</li>
    </ul>
    </div>```

    img和div的宽度不一样问题和li之间空隙问题的解决方案的更多相关文章

    1. 关于Div的宽度与高度的100%设定

      http://www.cnblogs.com/clare-zhang/archive/2011/08/26/2154220.html 正像你所知道的那样,设置DIV大小的有两个属性width和heig ...

    2. 如何设置div的宽度为100%-xx px?

      如何设置div的宽度为100%-xx px? 参见如下帖子:http://stackoverflow.com/questions/15183069/div-width-100-10px-relativ ...

    3. Div的宽度与高度的100%设定

      div的100%是从其上一级div的宽高继承来的,所以必须设置其上一级div的宽度或高度,否则无效. 举例说明:父div(deman)宽300高200,子div(cc)如果在这个条件下设置divcc的 ...

    4. CSS如何让DIV的宽度随内容的变化

      [css]CSS如何让DIV的宽度随内容的变化 让div根据内容改变大小 div{ width:auto; display:inline-block !important; display:inlin ...

    5. div 内容宽度自适应、超出后换行

      div 内容宽度自适应,超出后换行 { max-width:100%;width: fit-content;width: -webkit-fit-content;width: -moz-fit-con ...

    6. div 自适应宽度

      div 自适应宽度 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...

    7. div自适应宽度

      对于div自适应宽度,网上的说法基本上都是将要自适应宽度的div放在其它固定宽度的最后,不指定其float属性或将float属性指定为none,比如三栏布局居中的一栏为自适应宽度,就可以这样来定义三栏 ...

    8. 关于ie6中绝对定位或浮动的div中既有向左float也有向右float时候如何让外层div自适应宽度的解决方案--

      一个详细的说明请见: http://www.cnblogs.com/yiyang/p/3265006.html 我的问题大约为,如下代码: <!DOCTYPE html PUBLIC " ...

    9. 用伪类实现一个div的宽度和高度是固定百分比

      遇到一个题目:一个div宽度是固定百分比的情况下,如何设置高度是宽度的80% 看到题目的第一反应是用js控制,获取到div的宽度之后再用宽度的80%来设置div的高度,但是如何在不用js的情况下,只用 ...

    随机推荐

    1. javaee IO流复制的方法

      package Zjshuchu; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileN ...

    2. Centos 修改主机名称

      Centos 配置主机名称: 1.首先查询一下当前的主机名称 [root@localhost~]# hostnamectl status Static hostname: ****** //永久主机名 ...

    3. JS代码引用位置问题-转

      看到很多JS代码全部放在head中的情况,其实这是个细节问题.转载一个知乎用户于江水的答案: 作者:于江水链接:https://www.zhihu.com/question/34147508/answ ...

    4. 0804关于mysql 索引自动优化机制: 索引选择性(Cardinality:索引基数)

      转自http://blog.csdn.net/zheng0518/article/details/50561761 1.两个同样结构的语句一个没有用到索引的问题: 查1到20号的就不用索引,查1到5号 ...

    5. 【ACM】bailian_2703_骑车与走路_201307301543

      2703:骑车与走路总时间限制: 1000ms 内存限制: 65536kB 描述 在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车.开锁.停车.锁车 ...

    6. 洛谷—— P2690 接苹果

      https://www.luogu.org/problem/show?pid=2690 题目背景 USACO 题目描述 很少有人知道奶牛爱吃苹果.农夫约翰的农场上有两棵苹果树(编号为1和2), 每一棵 ...

    7. 【软件project】之第五、六章总结

      软件project的前几章各自是软件计划.需求分析.软件设计.整体的都规划好了以后,就该着手去实践了. 所谓的理论体系足够强大了以后,实践就显得尤为轻松.我们设计软件,实践当然就是用我已经计划好的语言 ...

    8. SERVICE_NAME和SERVICE_NAMES和GLOBAL_DBNAME的各自己定义

      tnsnames.ora文件中边SERVICE_NAME的參数值--对于动态注冊和静态注冊.该參数有不同的取值 对于动态注冊: The following pfile/spfile parameter ...

    9. root用户不能改动iptables

      需求:因为防火墙做了IP和port限制,如今须要加入一条规则使之能够訪问指定的IP和port. vi /etc/sysconfig/iptables, 加入完毕后,wq保存,提示文件仅仅读无法保存.! ...

    10. 【cl】cmd相关命令

      cd  进入目录 dir  列出当前目录下的文件[在linux上是ls] e:  进入E盘 tab键可以快速进入目录