首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS无法将文本与::前和::后对齐

CSS无法将文本与::前和::后对齐
EN

Stack Overflow用户
提问于 2019-03-10 15:35:49
回答 2查看 185关注 0票数 1

我正在努力学习css,最近我遇到了混合混合模式,我在codepen 这里上发现了非常好的代码,但是当我尝试文本对齐: h1;只有h1对齐。

代码语言:javascript
复制
  div {
    position: relative;
  }
  
  h1 {
    font-family:"Yu Gothic", "游ゴシック", YuGothic, "游ゴシック体", "ヒラギノ角ゴ Pro W3", "メイリオ", sans-serif;
    font-size: 8vw;
    font-weight: bold;
    color: rgba(0, 0, 200, 0.7);
  }
  
  h1::before {
    position: absolute;
    z-index: 5;
    left: -5px;
    top: 0;
    content: attr(text);
    color:rgba(200,0,0,.7);
    mix-blend-mode: multiply;
  }
  
  h1::after {
    position: absolute;
    z-index: 5;
    left: 5px;
    top: 0;
    content: attr(text);
    color:rgba(0,200,0,.7);
    mix-blend-mode: multiply;
  }
代码语言:javascript
复制
<div>
  <h1 text="BLEND-MODESを使う">BLEND-MODESを使う</h1>
</div>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-10 15:44:44

您可以创建h1内联块并添加position:relative,这样伪元素相对于它(而不是div元素)被放置,然后对整个h1 (包括伪元素)进行居中。

我还使用transform而不是左/右简化了代码。

代码语言:javascript
复制
div {
  text-align: center;
}

h1 {
  font-family: "Yu Gothic", "游ゴシック", YuGothic, "游ゴシック体", "ヒラギノ角ゴ Pro W3", "メイリオ", sans-serif;
  font-size: 8vw;
  font-weight: bold;
  color: rgba(0, 0, 200, 0.7);
  display: inline-block;
  position: relative;
}
h1::before,
h1::after {
  content: attr(text);
  position: absolute;
  z-index: 1;
  left:0;
  mix-blend-mode: multiply;
}


h1::before {
  transform:translateX(-5px);
  color: rgba(200, 0, 0, .7);
}

h1::after {
  transform:translateX(5px);
  color: rgba(0, 200, 0, .7);
}
代码语言:javascript
复制
<div>
  <h1 text="BLEND-MODESを使う">BLEND-MODESを使う</h1>
</div>

票数 1
EN

Stack Overflow用户

发布于 2019-03-10 15:52:17

您看到的text-align的问题与您对mix-blend-mode的使用完全无关。

css属性text-align将在元素的可用空间内对齐文本内容。

对于块元素,通常情况下,可以得到居中的文本。这里我们看到一个简单的例子,h1是一个块元素,因此它占用了整个可用的宽度,并且文本很好地居中。

我添加了一个红色背景,这样您就可以准确地看到h1元素的位置:

代码语言:javascript
复制
h1 {
  background-color: red;
  text-align: center;
}
代码语言:javascript
复制
<h1>
Test
</h1>

但是,当您更改元素的position属性时,可以将元素从盒子模型的流中取出。这意味着它不考虑其他元素的位置计算,也不在自己的位置计算中使用其他元素,包括宽度和高度。正因为如此,它失去了计算“使用全宽度”的意思的能力。因此,块级元素开始表现为内联元素,它的宽度是包含内容所必需的最小值。

请注意我们的红色背景:

代码语言:javascript
复制
h1 {
  background-color: red;
  text-align: center;
  position: absolute;
}
代码语言:javascript
复制
<h1>
Test
</h1>

文本是“居中”的,但由于元素与文本具有相同的宽度,因此效果将丢失。

要查看比文本居中的文本更大的框,要么必须( a)不使用绝对定位,以便返回框模型流;或者( b)使用css width属性为元素提供显式宽度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55089327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档