html - 为什么图像源为空时会添加黑线?
问题描述
我正在尝试创建一个带有图像预览的徽标上传组件,在添加图像源之前,我在图像边框附近看到这条黑线,我不知道为什么。
我试图禁用轮廓、边框半径等。但只有在添加实际图像时,这条黑线才会消失。
<div class="preview-logo">
<img src='' />
</div>
.preview-logo {
display: flex;
justify-content: center;
margin: 2rem 0;
}
.preview-logo img {
height: 150px;
width: 150px;
border-radius: 50%;
box-shadow: 0 2px 4px 0 rgba(185, 185, 185, 0.6),0 2px 10px 0 rgba(185, 185, 185,0.46);
background-color: #eceafd;
border: 1px solid #3633502d;
}
解决方案
src 属性必须存在,并且必须包含一个有效的非空 URL,该 URL 可能被空格包围,引用非交互式、可选动画的图像资源,既不是分页也不是脚本。
与大多数 HTML 元素一样,如果您不完全遵守规范,可能会发生奇怪的事情,<img>
标签也不例外。但是,您可以利用另一个重要属性来解决问题(或不存在src
的属性:alt
属性。
您可以将alt
属性设置为空字符串' '
,这足以隐藏由于缺少src
属性而当前看到的外边框:
<div class="preview-logo">
<img src='' alt=' ' />
</div>
或者,如果您没有src
设置属性,则可以考虑完全隐藏该元素:
.preview-logo img[src=''] {
display: none;
}
例子
.preview-logo {
display: flex;
justify-content: center;
margin: 2rem 0;
}
.preview-logo img {
height: 150px;
width: 150px;
border-radius: 50%;
box-shadow: 0 2px 4px 0 rgba(185, 185, 185, 0.6), 0 2px 10px 0 rgba(185, 185, 185, 0.46);
background-color: #eceafd;
border: 1px solid #3633502d;
}
<div class="preview-logo">
<img src='' /><br /><br />
<img src='' alt=' ' />
</div>
推荐阅读
- java - Java中给一个变量赋值2个值是什么意思
- javascript - 在 HTML 字符串中调用函数时,TypeScript 'this' 未定义
- html - 无法让 div 与 css 正确对齐
- python - 如何在pyqt5中调整垂直框布局中添加的小部件的几何形状
- c# - 如何使字符串为空以在c#中转换为文本框
- assembly - Grub 没有正确加载我的操作系统
- python - 给定代码的混淆矩阵。数据集仅包含 6 个类,没有标签
- flutter - Flutter Dialog 作为单独的文件和类
- node.js - Mocha 测试在本地运行良好,但由于解构语法而在 Travis 上失败?
- java - 在 mousePressed() 之后 keyPressed() 方法不起作用