我正在尝试在跨度周围放置一些div,但在获取文本的高度和宽度时遇到问题。我不使用盒子阴影,因为它们将在动画中使用。这里是picture链接的我希望它的外观。 Here是当前代码。
我尝试了多种方法,包括具有多个相同的跨度,但是我不能包含:: after代码,因为这会使我的代码变得很奇怪,并且具有.mid和.max宽度,但这也搞砸了我的:: after代码和过渡。
:root {
--txt-color: #fff;
--txt-box-bg: #424242;
--main-bg: #000;
--transparent: transparent;
/* front page title text */
--main-front-color: #e84118;
--second-front-color: #fbc531;
--third-front-color: #00a8ff;
}
* {
margin: 0px;
padding: 0px;
}
/* Text */
.head-text {
font-family: "IBM Plex Sans", sans-serif;
color: var(--txt-color);
}
.main-text {
font-family: "IBM Plex Mono" monospace;
color: var(--txt-color);
}
.bold {
font-weight: bold;
}
.normal {
font-weight: normal;
}
.light {
font-weight: lighter;
}
/* Allgin */
.center {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
/* classes */
.front-page {
background-color: var(--main-bg);
}
.full-page {
background-size: cover;
height: 100vh;
}
/* IDs */
#title-text {
position: absolute;
display: inline-block;
background-clip: text;
color: transparent;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
white-space: nowrap;
background-image: linear-gradient(#000,#000);
background-size: 100% 100%;
background-position: right;
background-repeat: no-repeat;
transition: 1s all;
font-weight: bold;
text-align: center;
font-size: 90px;
-webkit-text-stroke: 2px var(--main-front-color);
animation: stroke-rainbow 13s linear infinite;
z-index: 2;
}
#title-text::after {
content: '';
display: block;
width: 0;
height: 4px;
background: var(--txt-color);
transition: 1s all;
animation: stroke-rainbow 13s linear infinite;
}
#title-text:hover {
background-size: 0% 100%;
}
#title-text:hover::after {
width: 100%;
}
@keyframes stroke-rainbow {
0% {
border-color: var(--main-front-color);
-webkit-text-stroke-color: var(--main-front-color);
background-color: var(--main-front-color);
#title-text::after {
}
}
25% {
border-color: var(--second-front-color);
-webkit-text-stroke-color: var(--second-front-color);
background-color: var(--second-front-color);
}
50% {
border-color: var(--third-front-color);
-webkit-text-stroke-color: var(--third-front-color);
background-color: var(--third-front-color);
}
75% {
border-color: var(--second-front-color);
-webkit-text-stroke-color: var(--second-front-color);
background-color: var(--second-front-color);
}
100% {
border-color: var(--main-front-color);
-webkit-text-stroke-color: var(--main-front-color);
background-color: var(--main-front-color);
}
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Mono:400,400i|IBM+Plex+Sans:100,100i,400,400i,700,700i" rel="stylesheet">
<title>Portfolio</title>
</head>
<body>
<!-- Full page intro -->
<div class="front-page full-page">
<span id="title-text" class="center head-text">Hi</span>
</div>
</div>
</body>
</html>
答案 0 :(得分:2)
您可以使用flexbox有效地做到这一点。创建一个带有一系列带有彩色边框的嵌套div的容器div。将您的文字放在最中心的div中。
HTML:
<div id="container">
<div id="one">
<div id="two">
<div id="three">
<div id="four">
<div id="five">
<div id="six">
Hi!
</div>
</div>
</div>
</div>
</div>
</div>
</div>
CSS:
#container {
margin: 0 auto;
display: flex;
justify-content: center;
align-items: center;
width: 60vw;
height: 100vh;
}
#one {
display: flex;
justify-content: center;
align-items: center;
border: 2px solid yellow;
padding: 20px;
}
#two {
display: flex;
justify-content: center;
align-items: center;
border: 2px solid red;
padding: 20px;
}
#three {
display: flex;
justify-content: center;
align-items: center;
border: 2px solid rebeccapurple;
padding: 20px;
}
#four {
display: flex;
justify-content: center;
align-items: center;
border: 2px solid dodgerblue;
padding: 20px;
}
#five {
display: flex;
justify-content: center;
align-items: center;
border: 2px solid lightgreen;
padding: 20px;
}
#six {
display: flex;
justify-content: center;
align-items: center;
border: 2px solid brown;
padding: 20px;
}
编辑:回想起来,将每个编号的div(例如#one,#two等)分配给类似.colored-box
的共享类会更加干净。您的HTML,然后在CSS中将该类用于所有共享属性,以免重复代码。
HTML:
<div id="container">
<div id="one" class="colored-box">
<div id="two" class="colored-box">
<div id="three" class="colored-box">
<div id="four" class="colored-box">
<div id="five" class="colored-box">
<div id="six" class="colored-box">
Hi!
</div>
</div>
</div>
</div>
</div>
</div>
</div>
CSS:
.colored-box {
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
#one {
border: 2px solid yellow;
}
#two {
border: 2px solid red;
}