最近在做一个小游戏时发现了一个问题,总是在弹出img时先出现一个灰色的边框,所以为了查找问题,查找了一些关于img 默认边框的小知识点。

在这里整理了一些知识点:

一. 下面代码都试验过后会发现,img会有外边框,这个也是使用img元素的一个坑

     一般在img为空时出现,因为浏览器找不到图,就会用一个边框来代替

复制代码
<!DOCTYPE html>
<html>
 
    <head>
        <meta charset="UTF-8">
        <title>img外边框</title>
    </head>
 
    <body>
        <p class="container-img">
            <img class="common-icon login-icon" src="">
        </p>
 
    </body>
    <style type="text/css">
        .container-img {
            display: inline-block;
            width: 36px;
            height: 36px;
            overflow: hidden;
        }
        .common-icon {
            display: inline-block;
            width: 36px;
            height: 36px;
        }
        
    </style>
复制代码

为了解决这个问题,整理了几个方法:

1. 设置空img的css样式

img[src=""],img:not([src]){
            opacity:0;
        }

第一个为属性选择器(img中src为空的元素),第二个为反选伪类选择器(src没有的img元素),将其的opacity设置为空

2.img剪裁方法

(1)负margin

复制代码
 .container-img img {
             display: inline-block;
             margin: -1px;
             width: 38px;
             height: 38px;
         }
复制代码

负的边距像能减小元素在文档流中的尺寸一样,但其实它的尺寸大小并没变,只是文档流在计算元素位置的时候,会认为负边距把元素的尺寸减小了,所以位置也就发生变化了。还有,文档流只能是后面的流向前面的,即文档流只能向左或向上流动,不能向下或向右移动。所以margin = -1px相当于向左上方移动一个像素,所以margin = -1px相当于向左上方移动一个像素,为了让父级元素可以遮住img的边框,需要将img width/height 均加2px,相当与对图片进行剪裁,定位元素方法与这个原理一样。

负margin的使用场景很多,我们很多用的三栏布局的圣杯布局,双飞翼布局都是这么使用的。

(2)绝对定位

复制代码
.container-img{
            position:relative;
       }
.container-img img {
            position: absolute;
            top: -1px;
            right: -1px;
            width: 38px;
            height: 38px;
        }



作者:chancejl 
来源:CSDN 
转载原文地址:https://blog.csdn.net/qq_39833794/article/details/79922355 
posted on 2020-09-10 22:28  就这样吧666  阅读(492)  评论(0编辑  收藏  举报