凹凸曼但没有小怪兽 CSS的世界

本文介绍了一种利用CSS内联块级元素显示文本的技巧,通过设置宽度为0,利用文字的最小宽度原则展示文本,适用于特殊布局需求。文章详细解释了东亚文字和西文的最小宽度特性,并探讨了代码优化的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:使用一层HTML标签实现如下效果

效果图

套路图

这是从“ CSS的世界 ”中学来的(P2​​3),大神就是大神,熟练掌握着css各种属性的特性。

以下是代码:  

<span class="ao"></span>
<span class="tu"></span>
.ao,
.tu {
    display: inline-block;
    width: 0;
    font-size: 14px;
    line-height: 18px;
    margin: 35px;
    color: #fff;
}
.ao:before,
.tu:before {
    outline: 2px solid #cd0000;
    font-family: Consolas, Monaco, monospace;
}
.ao:before {
    content: "love你love";
}
.tu {
    direction: rtl;
}
.tu:before {
    content: "我love你";
}

原理:这是显示:内联块;的“首选最小宽度”属性,即当元素宽度:0;时,元素的宽度由文字/图片决定。

    文字最小宽度原则:

        1.东亚文字(如中文),最小宽度是每个汉字的宽度,如例子所示。

        2.西文,由特定的连续的英文字符单元决定,一般终止于空格,短横线,问号及其他非英文字符等,可以自己修改代码感受一下(可以用字符:盈亏所有;实现每一个字符都是最小单位)。

        3.图片就是图片宽啦。

此部分更深层次知识涉及宽度:汽车;及内部尺寸与流体特性(都是张老师的专业术语),感兴趣可以自行查阅。

PS(一小部分读后感):可能你会觉得整个职业生涯中都不会有这样的需求,常用的效果我们都能实现,知道这个特性有什么用其实这只是一个小小的例子,来让读者明白他的效果,真正的意义在于你明白整个宽度的特性之后(哎),你的代码会更精炼,可读性强,可维护性强...整体来说就是代码优化,提高开发效率。

 

### 凹凸怪兽游戏逻辑及代码实现 以下是一个简单的C++示例,展示如何开发一个基于文本的“凹凸怪兽”游戏。该游戏包含基本的游戏逻辑,例如玩家选择、攻击力计算以及胜负判断。 ```cpp #include <iostream> #include <cstdlib> #include <ctime> #include <string> using namespace std; int main() { srand(static_cast<unsigned>(time(0))); // 初始化随机数种子[^1] string player; int playerHealth = 100, monsterHealth = 50; int playerAttack, monsterAttack; cout << "欢迎来到凹凸怪兽游戏!" << endl; cout << "请输入你的角色名称(凹凸):" << endl; cin >> player; cout << "\n" << player << " 准备与怪兽战斗!" << endl; while (playerHealth > 0 && monsterHealth > 0) { // 玩家攻击 playerAttack = rand() % 20 + 1; // 随机生成1到20之间的攻击力 monsterHealth -= playerAttack; if (monsterHealth < 0) monsterHealth = 0; cout << player << " 攻击了怪兽,造成了 " << playerAttack << " 点伤害。" << endl; cout << "怪兽剩余生命值:" << monsterHealth << endl; if (monsterHealth <= 0) break; // 怪兽反击 monsterAttack = rand() % 10 + 1; // 随机生成1到10之间的攻击力 playerHealth -= monsterAttack; if (playerHealth < 0) playerHealth = 0; cout << "怪兽反击了,对 " << player << " 造成了 " << monsterAttack << " 点伤害。" << endl; cout << player << " 剩余生命值:" << playerHealth << endl; cout << "-----------------------------" << endl; } if (playerHealth > 0) cout << player << " 获胜!你成功击败了怪兽!" << endl; else cout << "怪兽获胜!" << player << " 被打败了..." << endl; return 0; } ``` #### 代码说明 - 使用 `srand` 和 `rand` 函数生成随机数,模拟战斗中的不确定因素[^1]。 - 游戏中包含两个主要角色:玩家(凹凸)和怪兽。每个角色都有健康值和攻击力。 - 每轮游戏中,玩家先攻击怪兽,然后怪兽反击玩家。如果一方的健康值降为零或以下,则游戏结束。 ### 注意事项 - 该示例仅为简单演示,实际开发中可以扩展更多功能,例如添加多种技能、道具系统或更复杂的AI逻辑。 - 在实际项目中,建议使用面向对象编程(OOP)来组织代码结构,提高可维护性和扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值