HTML问题:为啥img标签对中margin和padding设置效果会完全一样?还有段落P标签也是此效果?请具体解释

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML问题:为啥img标签对中margin和padding设置效果会完全一样?还有段落P标签也是此效果?请具体解释相关的知识,希望对你有一定的参考价值。

参考技术A

margin和padding的效果肯定是不一样的


如上图


黑色的那条线是边框,是区分img标签和其他标签的分界点


绿色部分是padding,他是属于img标签的一部分

橘色部分是margin,他用于和其他元素拉开距离,他不是img的一部分


针对用margin还是padding的问题,我个人是这样认为的:


padding 能很好的控制元素内部内容的位置(例如,图片四周的留白,文字在容器内的页边距)

margin 能很好的控制元素之间的位置(例如,2个li之间空一些距离)


修改padding,在box-sizing为border-box的情况下,不会影响其他元素的位置

修改margin,不会对元素本身内容的位置造成影响


通常来说,大多数html元素均为块级元素(块级元素的表现是:以新行开始或结束,例如p,在默认情况下,p是占一整行的)


当然,其他元素可以设定display:block来成为块级元素


针对于img元素来说,设置为块级元素意义不大,因为他已经不能再在自己的内存嵌套其他元素了,设置img为块级元素,大多都是为了解决一些css的兼容性问题,例如在ie6下,设置img为block可以解决图片下面留白的问题


纯手打,希望帮到您

参考技术B 当未设置边框时,外边距(margin)和内边距(padding)在效果上确实没什么本质区别。就好比你家的房子,你的家具距离墙壁的距离是内边距,墙壁与邻居房子的距离是外边距,当把你家房子的墙壁拆掉,家具完全暴露出来后,这时候家具和邻居房子的距离自然也就无所谓外边距还是内边距了。
你试试下面两个p标签就完全明白了:

<p style="border:1px solid #000; margin:10px">这是margin设为10px的效果</p>
<p style="border:1px solid #000; padding:10px">这是padding设为10px的效果</p>

为啥 React.js 删除 <img /> 上的 srcset 标签?

【中文标题】为啥 React.js 删除 <img /> 上的 srcset 标签?【英文标题】:Why is React.js removing the srcset tag on <img />?为什么 React.js 删除 <img /> 上的 srcset 标签? 【发布时间】:2016-04-14 05:58:13 【问题描述】:

当我的&lt;img /&gt; 标记上有srcset 属性时,为什么它没有显示在浏览器中?似乎通过 React.js 正在剥离它。

<img src="/images/logo.png" srcset="/images/logo-1.5x.png 1.5x, /images/logo-2x.png 2x" />

【问题讨论】:

【参考方案1】:

解决方案是使用srcSet 而不是srcset

<img src="/images/logo.png" srcSet="/images/logo-1.5x.png 1.5x, /images/logo-2x.png 2x" />

参考:https://facebook.github.io/react/docs/tags-and-attributes.html 下HTML Attributes

【讨论】:

【参考方案2】:

另一个使用模板文字的丑陋解决方案:

<img
  alt=''
  src=require('../../assets/images/logo/logo.png')
  srcSet=`
    $require('../../assets/images/logo/logo@2x.png') 2x, 
    $require('../../assets/images/logo/logo@3x.png') 3x
  `
/>

【讨论】:

如果你在顶部导入文件,你可以让它变得漂亮 @StephaneL 这是否意味着您要在每个浏览器上导入图像? @Sam 不,Webpack 将图像(或要求)的导入解析为字符串(图像的 uri)。图片数据只会在浏览器请求时获取,浏览器会根据srcSet来决定它需要哪张图片。【参考方案3】:

尝试使用带有字符串的 srcSet 可能对我不起作用,可能是因为 Webpack 是如何工作的,所以最终导入它们并将它们包含在模板字符串中,如下例所示:

import nat1 from "./img/nat-1.jpg";
import nat1Large from "./img/nat-1-large.jpg";
import nat2 from "./img/nat-2.jpg";
import nat2Large from "./img/nat-2-large.jpg";
import nat3 from "./img/nat-3.jpg";
import nat3Large from "./img/nat-3-large.jpg";


  <div className="composition">
                <img
                  srcSet=`$nat1 300w, $nat1Large 1000w`
                  sizes="(max-width: 56.25em) 20vw, (max-width: 37.5em) 30vw, 300px"
                  
                  className="composition__photo composition__photo--p1"
                  src=nat1Large
                />
                <img
                  srcSet=`$nat2 300w, $nat2Large 1000w`
                  sizes="(max-width: 56.25em) 20vw, (max-width: 37.5em) 30vw, 300px"
                  
                  className="composition__photo composition__photo--p2"
                  src=nat2Large
                />
                <img
                  srcSet=`$nat3 300w, $nat3Large 1000w`
                  sizes="(max-width: 56.25em) 20vw, (max-width: 37.5em) 30vw, 300px"
                  
                  className="composition__photo composition__photo--p3"
                  src=nat3Large
                />
  </div>

【讨论】:

以上是关于HTML问题:为啥img标签对中margin和padding设置效果会完全一样?还有段落P标签也是此效果?请具体解释的主要内容,如果未能解决你的问题,请参考以下文章

html中的img标签为啥加载不上图片呢?

为啥 <img> 标签在 HTML 中没有关闭?

为啥我在使用 img 标签时会收到 403 禁止?

解决img标签与其它标签间隙问题?

HTML CSS里面为啥不能用 *margin:0; padding:0;?

css 为啥有时MARGIN 不起作用,