gpt4 book ai didi

html - 在 css 中对齐小形状的问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:01 25 4
gpt4 key购买 nike

我是 CSS 的新手,但我在 stackoverflow 上找不到类似的问题。我尝试像下图那样模拟单选按钮:

Delivered by designer

我做了如下:

.root {
display: flex;
}

.checkbox {
width: 1.2rem;
height: 1.2rem;
border-radius: 50%;
border-color: blue;
border-width: 0.2;
border-style: solid;

display: flex;
justify-content: center;
align-items: center;
}

.mark {
width: 1.1rem;
height: 1.1rem;
background-color: blue;
border-radius: 50%;
}
<body>
<div class="root">
<div class="checkbox">
<div class="mark"></div>
</div>
<div class="checkbox">
<div class="mark"></div>
</div>
<div class="checkbox">
<div class="mark"></div>
</div>
<div class="checkbox">
<div class="mark"></div>
</div>
<div class="checkbox">
<div class="mark"></div>
</div>
</div>
</body>

我使用的是装有 Chrome 和 Safari 的 MacBook Pro。

在 Chrome 上它看起来像这样:

Incorrect behavior

在 Safari 上它看起来好一点,但问题仍然存在(查看每个图标的底部)。

enter image description here

谁能帮我解释一下我做错了什么?

最佳答案

首先,如果你想要固定的形状和尺寸。使用 px 而不是 em% 因为它们根据文档缩放。例如,em 等于当前字体大小。由于单位的原因,您遇到了违规行为。更多信息read this article

.root {
display: flex;
}

.checkbox {
width: 20px;
/* fixed width */
height: 20px;
/* fixed height */
border-radius: 50%;
border-color: blue;
border-style: solid;
margin-left: 10px;
/* fixed left margin to keep every checkbox element a 10px from left to the next one */
display: flex;
justify-content: center;
align-items: center;
}

.mark {
width: 14px;
/* fixed width; */
height: 14px;
/* fixed height; */
background-color: blue;
border-radius: 50%;
}
<body>
<div class="root">
<div class="checkbox">
<div class="mark"></div>
</div>
<div class="checkbox">
<div class="mark"></div>
</div>
<div class="checkbox">
<div class="mark"></div>
</div>
<div class="checkbox">
<div class="mark"></div>
</div>
<div class="checkbox">
<div class="mark"></div>
</div>
</div>
</body>

我们现在有固定大小的固定 div。我们添加了 margin-left 来添加每个 checkbox 元素之间的间距。如图所示。在 div 内部,mark 元素。 flex 使内部 div 垂直对齐,并且您可以通过跨平台支持获得所需的行为。

您可以编辑这些值以获得所需的结果。
修复您在下面评论中的内容。这是因为 flex 。为了解决这个问题,我们必须对 child 使用“%”值。所以他们根据父级缩放并且 flex 不会干扰。为此,只需将宽度和高度设置为

.root {
display: flex;
}

.checkbox {
width: 20px;
/* fixed width */
height: 20px;
/* fixed height */
border-radius: 50%;
border-color: blue;
border-style: solid;
margin-left: 10px;
/* fixed left margin to keep every checkbox element a 10px from left to the next one */
display: flex;
justify-content: center;
align-items: center;
}

.mark {
width: 90%;
/* fixed width; */
height: 90%;
/* fixed height; */
background-color: blue;
border-radius: 50%;
}
<body>
<div class="root">
<div class="checkbox">
<div class="mark"></div>
</div>
<div class="checkbox">
<div class="mark"></div>
</div>
<div class="checkbox">
<div class="mark"></div>
</div>
<div class="checkbox">
<div class="mark"></div>
</div>
<div class="checkbox">
<div class="mark"></div>
</div>
</div>
</body>

关于html - 在 css 中对齐小形状的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56506836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com