在CSS中将十字线与文本对齐

bnl4lu3b  于 2023-01-27  发布在  其他
关注(0)|答案(2)|浏览(164)

我试图创建一个十字标记和一个复选标记来对齐后面的文本。然而,虽然复选标记看起来对齐得很好,但十字标记却在右上方。有什么方法可以可靠地解决这个问题吗?我不确定调整边距和填充是否明智,因为一旦屏幕大小发生变化,它可能会损坏。

.list {
    font-family: sans-serif;
    margin: 1rem 0 1rem !important;
}

.checkmark {
    transform: rotate(45deg);
    height: 24px;
    width: 12px;
    border-bottom: 7px solid lightgreen;
    border-right: 7px solid lightgreen;
}

.crossmark {
    height: 24px;
    width: 12px;
    position:relative;
}

.crossmark::after{
     position: absolute;
     content: '';
     width: 24px;
     height: 0px;
     border: solid orange;
     border-width: 0 0px 7px 0;
     transform: rotate(45deg);
     top:0;
 }

.crossmark::before{
     position: absolute;
     content: '';
     width: 24px;
     height: 0px;
     border: solid orange;
     border-width: 0 0px 7px 0;
     transform: rotate(-45deg);
     top:0;
 }

.highlighted-err {
    background-color: red;
    color: white;
    border-radius: 0.5rem;
    padding: 0.5rem;
}

.highlighted-success {
    background-color: darkgreen;
    color: white;
    border-radius: 0.5rem;
    padding: 0.5rem;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

<div class="row list" id="type-msg">

</div><div class="row list highlighted-success" id="size-msg">
    <div class="col-md-1">
        <div class="checkmark"></div>
    </div><div class="col-md-11">
        <div>Bild-Dateien müssen 600 x 450 Pixel oder größer sein.</div>
    </div>

</div><div class="row list highlighted-err" id="aspect-msg">
    <div class="col-md-1">
        <div class="crossmark"></div>
    </div><div class="col-md-11">
        <div>Bild-Dateien müssen eine Breite zu Höhe von 3:4 haben.</div>
    </div>
    
</div>
ljo96ir5

ljo96ir51#

在移除之前和之后交叉标记中

top:0;

将2中的内容替换为

top:12px;

你正在旋转45度和-45度。将元素定位在中心(十字标记24 px,所以中心12 px),然后旋转。变换原点在元素的中心旋转。

2nbm6dog

2nbm6dog2#

使用top: 0;的绝对定位强制before和after元素位于父元素的顶部。
通过将其切换为top: 50%;并将translate(0, -50%)添加到每个转换,可以有效地将两个元素都置于父元素的中心。
即使您开始更改固定宽度和高度的值,此操作也会起作用。

.list {
    font-family: sans-serif;
    margin: 1rem 0 1rem !important;
}

.checkmark {
    transform: rotate(45deg);
    height: 24px;
    width: 12px;
    border-bottom: 7px solid lightgreen;
    border-right: 7px solid lightgreen;
}

.crossmark {
    height: 24px;
    width: 12px;
    position:relative;
}

.crossmark::after{
     position: absolute;
     content: '';
     width: 24px;
     height: 0px;
     border: solid orange;
     border-width: 0 0px 7px 0;
     transform: translate(0, -50%) rotate(45deg);
     top: 50%;
 }

.crossmark::before{
     position: absolute;
     content: '';
     width: 24px;
     height: 0px;
     border: solid orange;
     border-width: 0 0px 7px 0;
     transform: translate(0, -50%) rotate(-45deg);
     top: 50%;
 }

.highlighted-err {
    background-color: red;
    color: white;
    border-radius: 0.5rem;
    padding: 0.5rem;
}

.highlighted-success {
    background-color: darkgreen;
    color: white;
    border-radius: 0.5rem;
    padding: 0.5rem;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

<div class="row list" id="type-msg">

</div><div class="row list highlighted-success" id="size-msg">
    <div class="col-md-1">
        <div class="checkmark"></div>
    </div><div class="col-md-11">
        <div>Bild-Dateien müssen 600 x 450 Pixel oder größer sein.</div>
    </div>

</div><div class="row list highlighted-err" id="aspect-msg">
    <div class="col-md-1">
        <div class="crossmark"></div>
    </div><div class="col-md-11">
        <div>Bild-Dateien müssen eine Breite zu Höhe von 3:4 haben.</div>
    </div>
    
</div>

相关问题