我正在尝试使用纯HTML和CSS创建一个标志。设计非常直观,是一个[13x13]的矩阵,其中包含一些有颜色的项目。
CSS非常简单和次要。但是,HTML代码却有很多重复的部分,需要进行DRY(Don't Repeat Yourself)处理。
body { width: 100vmin; margin: auto }
logo {
display: grid;
grid-template-columns: repeat(13, 1fr);
}
s { }
w { background-color: #d6d6d6; aspect-ratio: 1 }
l { background-color: #d6d6d6; aspect-ratio: 1 }
f { background-color: #d6d6d6; aspect-ratio: 1 }
<logo> <f></f><f></f><f></f><s></s><f></f><f></f><f></f><s></s><f></f><s></s><f></f><f></f><f></f> <f></f><s></s><f></f><s></s><s></s><s></s><f></f><s></s><f></f><s></s><s></s><s></s><s></s> <f></f><s></s><f></f><s></s><f></f><f></f><f></f><s></s><f></f><s></s><f></f><s></s><f></f> <f></f><s></s><s></s><s></s><s></s><s></s><s></s><s></s><f></f><s></s><s></s><s></s><f></f> <f></f><s></s><l></l><l></l><l></l><l></l><l></l><s></s><f></f><s></s><f></f><s></s><f></f> <f></f><s></s><s></s><s></s><s></s><s></s><s></s><s></s><s></s><s></s><f></f><s></s><f></f> <f></f><s></s><l></l><l></l><l></l><l></l><l></l><l></l><s></s><f></f><f></f><s></s><f></f> <f></f><s></s><l></l><s></s><s></s><s></s><s></s><s></s><s></s><s></s><s></s><s></s><s></s> <f></f><s></s><l></l><s></s><l></l><l></l><l></l><s></s><w></w><s></s><w></w><s></s><w></w> <s></s><s></s><l></l><s></s><s></s><s></s><l></l><s></s><s></s><s></s><w></w><s></s><s></s> <l></l><l></l><l></l><s></s><l></l><l></l><l></l><w></w><w></w><w></w><w></w><s></s><w></w> <l></l><s></s><s></s><s></s><s></s><s></s><s></s><s></s><s></s><s></s><s></s><w></w><s></s> <l></l><l></l><l></l><l></l><l></l><l></l><l></l><l></l><l></l><l></l><s></s><w></w><w></w> </logo>
我已经尝试过使用<f/>代替<f></f>,但没有成功。
有没有办法减少这段代码?
注意:颜色应保持不变。
Your Answer
1 个回答
如果javascript可以使用,您可以将单元格类型连接成一个字符串对象,并使用它动态构建标志。示例代码如下。
let logo = document.getElementById("logo");
logo.dataset["cells"].split('').forEach(a => logo.append(document.createElement(a)));
body { width: 100vmin; margin: auto }
logo {
display: grid;
grid-template-columns: repeat(13, 1fr);
}
w { background-color: #d6d6d6; aspect-ratio: 1 }
l { background-color: #d6d6d6; aspect-ratio: 1 }
f { background-color: #d6d6d6; aspect-ratio: 1 }
<logo id="logo" data-cells="fffsfffsfsffffsfsssfsfssssfsfsfffsfsfsffsssssssfsssffslllllsfsfsffsssssssssfsffsllllllsffsffslssssssssssfslslllswswswsslssslssswsslllslllwwwwswlssssssssssswllllllllllsww"></logo>
根据对HTML/CSS的需求和@Temani Afif的评论,这里提供了一个SVG解决方案:
.w * { stroke:red;stroke-width:1;;fill:none;stroke-linejoin="miter"; }
.l * { stroke:green;stroke-width:1;;fill:none;stroke-linejoin="miter"; }
.f * { stroke:blue;stroke-width:1;;fill:none;stroke-linejoin="miter"; }
<logo>
<svg height="300" width="300" viewBox="-1 -1 15 15">
<g class="w">
<path d="M12.5,10 L12.5,12.5 L11,12.5" />
<path d="M6.5,10.5 L10.5,10.5 L10.5,8" />
<path d="M8,8.5 L9,8.5" />
<path d="M12,8.5 L13,8.5" />
</g>
<g class="l">
<path d="M4,8.5 L6.5,8.5 L6.5,10.5 L4,10.5" />
<path d="M7,4.5 L2,4.5" />
<path d="M8,6.5 L2.5,6.5 L2.5,10.5 L0.5,10.5 L0.5,12.5 L10,12.5" />
</g>
<g class="f">
<path d="M0.5,9 L0.5,0.5 L2.5,0.5 L2.5,3" />
<path d="M4,0.5 L6.5,0.5 L6.5,2.5 L4,2.5" />
<path d="M8.5,0 L8.5,5" />
<path d="M10,0.5 L13,0.5" />
<path d="M10,2.5 L11,2.5" />
<path d="M12.5,2 L12.5,7" />
<path d="M10.5,4 L10.5,6.5 L9,6.5" />
</g>
</svg>
</logo>
Hot Questions
function_exists()无法判定自定义函数
2024-04-29 11:01:01
google 浏览器 手机版显示的怎么实现
2024-04-23 00:22:19
子窗口操作父窗口,输出没反应
2024-04-19 15:37:47
父窗口没有输出
2024-04-18 23:52:34
关于CSS思维导图的课件在哪?
2024-04-16 10:10:18
Hot Tools
vc9-vc14(32+64位)运行库合集(链接在下方)
phpStudy安装所需运行库集合下载
VC9 32位
VC9 32位 phpstudy集成安装环境运行库
php程序员工具箱完整版
程序员工具箱 v1.0 php集成环境
VC11 32位
VC11 32位 phpstudy集成安装环境运行库
SublimeText3汉化版
中文版,非常好用
热门话题
抖音等级价目表1-75
20335
7
20335
7
wifi显示无ip分配
13531
4
13531
4
虚拟手机号接收验证码
11850
4
11850
4
gmail邮箱登陆入口在哪里
8836
17
8836
17
windows安全中心怎么关闭
8420
7
8420
7
热门文章
币圈土狗项目如何识别?避免归零币的陷阱与风险预警
2025-11-07
By DDD
2025年加密货币市场十大趋势预测:下一个风口在哪里?
2025-11-07
By DDD
win10字体安装后在软件里找不到怎么办_win10字体安装与识别方法
2025-11-07
By DDD
Galaxy的观点:山寨币ETF大军即将到来 哪些的前景会光明
2025-11-08
By DDD
铁路12306支付失败订单还在吗_铁路12306支付失败订单处理方法
2025-11-07
By DDD





