javascript - 在图像周围动态创建一个或多个边框
问题描述
需要在一个图像周围有未知数量的边框,已经做了一个解决方案,只是想知道是否有更好的可能性。
我有一个有很多照片展示的网站。每个节目都是一个 JSON 文件,其中每张照片都是该文件中的一个数组条目,例如
{
"filename": "02.jpg",
"short": "text under thumbnail",
"title": "A description or explanation above the photo"
}
通常照片会有一个小的白色边框,但有时我想显示该照片的位置,因此在 JSON 文件中我有该照片的以下附加信息:
"latitude": "51 02 39.73 N",
"longitude": "114 03 47.37 W",
我在照片周围放了一个黄色边框,表示有位置信息,因此单击照片或其中一个坐标(或键盘 M)打开 googleMaps 以显示位置。
最近我在一些照片中添加了一些视频,所以双击照片(或键盘 V)开始播放该视频。我在照片周围放了一个绿松石边框,表示有视频。在 JSON 文件中,它看起来像这样:
"video": "myvideo.mp4",
当然,突然间我有一张带有位置信息的照片和一个视频,所以现在我需要两个边框:一个黄色的边框和一个绿松石色的边框……更复杂的是,我偶尔会有一张带有声音剪辑的照片和绿色边框,在 JSON 文件中定义为:
"sound": "myclip.mp3",
因此,也可能会出现具有 3 种不同颜色边框的照片。
在阅读了一些 stackoverflow box-shadow 的文章后,我想出了以下在 Javascript 中创建 1、2、3 甚至更多边框的解决方案:
var borderStyle = "";
if (elt.longitude) {
borderStyle = "coordbrdr";
}
if (elt.sound) {
borderStyle += "soundbrdr";
}
if (elt.video) {
borderStyle += "videobrdr";
}
if (borderStyle == "") {borderStyle = "normalbrdr";}
$(elt.imgHTML).attr('class', borderStyle);
和随附的CSS:
.normalbrdr {border:6px solid white;}
.coordbrdr {border:6px solid yellow; cursor:pointer;}
.soundbrdr {border:6px solid lightgreen; cursor:pointer;}
.videobrdr {border:6px solid turquoise; cursor:pointer;}
.coordbrdrsoundbrdr {box-shadow: 0 0 0 6px yellow, 0 0 0 12px green; cursor:pointer}
.coordbrdrvideobrdr {box-shadow: 0 0 0 6px yellow, 0 0 0 12px turquoise; cursor:pointer}
.coordbrdrsoundbrdrvideobrdr {box-shadow: 0 0 0 6px yellow, 0 0 0 12px green, 0 0 0 18px turquoise; cursor:pointer}
.soundbrdrvideobrdr {box-shadow: 0 0 0 6px green, 0 0 0 12px turquoise; cursor:pointer}
所以通过这种方式,我设法建立了各种类值。
我的问题:是否有更短或更好的方法来动态创建不同的边界?
解决方案
推荐阅读
- python - Websocket客户端未在python中连接
- linux - 在 minicom 中看不到字符
- sql - 在 where 子句中加入表时,MS Access SQL 未收到任何结果
- c# - 在 Unity 中看起来完全相同但不相等的等效字符串
- sql - 从同一个表但不同时期计算值
- python - 在 TF 2.x 上保存子类模型
- wordpress - ebase,URI 添加到我的 URL。如何更换?
- javascript - 尝试使用 react-native-mmkv-storage 框架但未存储数据
- php - 使用 laravel 6.2 登录失败
- ios - 调整 UITextView 大小时缩放字体大小