html5写骰子 css

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    /* 设置背景块和骰子的共同属性: */
    section,
    span {
        /* 设置为弹性盒子 */
        display: flex;
        /* 加边框:美观 */
        border: 2px solid black;
        /* 背景色:美观 */
        background-color: aquamarine;
        /* 设置为怪异盒子,即宽高不被margin和padding影响 */
        box-sizing: border-box;
        /* 设置圆角半径20px */
        border-radius: 20px;
    }

    /* 给section设置宽高 */
    section {
        width: 650px;
        height: 150px;
        /* 侧轴对齐方式:使得骰子垂直居中 */
        align-items: center;
        /* 主轴对齐方式 :平均分*/
        justify-content:
            space-evenly;
        /* 补充易混点:
            1.space-between:紧贴父元素两边,平均分布
            2.space-around:每个子元素有固定的边距进行分布
        */
    }

    /* span为骰子容器 */
    span {
        width: 100px;
        height: 100px;
        display: flex;
        background-color: pink;
        /* 让骰子中的子元素在容器里贴边平均分布开 */
        justify-content: space-between;
        padding: 5px;
    }

    /* 骰子的子元素:小点 */
    b {
        width: 20px;
        height: 20px;
        background-color: white;
        border-radius: 100%;
    }

    /* 给第一个骰子设置小点的位置 */
    span:nth-child(1) {
        /* 主轴水平 */
        justify-content: center;
        /* 侧轴垂直 */
        align-items: center;
    }

    /* 给第二个骰子设置第二个小点的位置,因为第一个点的位置默认就是在左上 */
    span:nth-child(2) b:nth-child(2) {
        align-self: flex-end;
    }

    /* 给第三个骰子设置第二个小点的位置 ,因为在最前面已经设置过span内的元素space-between:贴边平均分布了,所以只需要设置中间的点居中和第三个点垂直方向(align-self)为flex-end*/
    span:nth-child(3) b:nth-child(2) {
        align-self: center;
    }

    span:nth-child(3) b:nth-child(3) {
        align-self: flex-end;
    }

    /* 第四个点分两组,i为分组,首先给i设置主轴方向是竖着的(colmun)他,再给主轴对齐方式设置贴边对齐 */
    i {
        display: flex;
        flex-direction: column;
        justify-content: space-between;
    }

    /* 第五个骰子,只需要设置中间的第二个分组为居中对齐,可以用子类的align-self直接设置居中,
这里如果误用为align-items效果不会显示的,align-items是针对i起效果的,而i的侧轴方向现在是横着的,因为在上面一个代码中给i设置了主轴为竖着,所以现在i的侧轴就是横着的*/
    span:nth-child(5) i:nth-child(2) {
        align-self: center;
    }
</style>

<body>
    <section>
        <span>
            <b></b>
        </span>
        <span>
            <b></b>
            <b></b>
        </span>
        <span>
            <b></b>
            <b></b>
            <b></b>
        </span>
        <span>
            <i>
                <b></b>
                <b></b>
            </i>
            <i>
                <b></b>
                <b></b>
            </i>
        </span>
        <span>
            <i>
                <b></b>
                <b></b>
            </i>
            <i>
                <b></b>
            </i>
            <i>
                <b></b>
                <b></b>
            </i>
        </span>
        <span>
            <i>
                <b></b>
                <b></b>
                <b></b>
            </i>
            <i>
                <b></b>
                <b></b>
                <b></b>
            </i>

        </span>
    </section>
</body>

</html>

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以回答这个问题。以下是一个用 JavaScript、HTMLCSS骰子HTML 代码: ``` <div class="dice"> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> <div class="dot"></div> </div> ``` CSS 代码: ``` .dice { width: 100px; height: 100px; border: 1px solid black; border-radius: 10px; display: flex; flex-wrap: wrap; justify-content: space-between; padding: 10px; } .dot { width: 20px; height: 20px; border-radius: 50%; background-color: black; margin: 5px; display: none; } .dot.active { display: block; } @keyframes roll { % { transform: rotateX(deg) rotateY(deg) rotateZ(deg); } 100% { transform: rotateX(720deg) rotateY(720deg) rotateZ(720deg); } } ``` JavaScript 代码: ``` const dice = document.querySelector('.dice'); const dots = dice.querySelectorAll('.dot'); function rollDice() { dice.classList.add('rolling'); setTimeout(() => { dice.classList.remove('rolling'); const num = Math.floor(Math.random() * 6) + 1; for (let i = ; i < dots.length; i++) { dots[i].classList.remove('active'); } switch (num) { case 1: dots[2].classList.add('active'); break; case 2: dots[].classList.add('active'); dots[4].classList.add('active'); break; case 3: dots[].classList.add('active'); dots[2].classList.add('active'); dots[4].classList.add('active'); break; case 4: dots[].classList.add('active'); dots[1].classList.add('active'); dots[3].classList.add('active'); dots[4].classList.add('active'); break; case 5: dots[].classList.add('active'); dots[1].classList.add('active'); dots[2].classList.add('active'); dots[3].classList.add('active'); dots[4].classList.add('active'); break; case 6: dots[].classList.add('active'); dots[1].classList.add('active'); dots[2].classList.add('active'); dots[3].classList.add('active'); dots[4].classList.add('active'); dots[5].classList.add('active'); break; } }, 200); } dice.addEventListener('click', rollDice); ``` 这个骰子可以通过点击来掷骰子,每次掷骰子会随机出现 1 到 6 的数字。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值