CSS 转换适用于 Firefox 但不适用于 Chrome
CSS transform works on Firefox but not on Chrome
我正在 CSS 中尝试一个东西,其中文本的背景是图像,当我们将鼠标悬停在文本上时,它会缩放到非常大的数字,即用作字体颜色的图像显示的数字完全起来。它在 Mozilla Firefox 上运行完美,但 CSS 的转换 属性 似乎在 Chrome 上被破坏并且文本在悬停在 Chrome.
上时消失了
/* font */
@import url('https://fonts.googleapis.com/css2?family=Rubik:wght@900&display=swap');
/* reset */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Rubik', sans-serif;
}
body,
html {
min-height: 100vh;
width: 100vw;
overflow-x: hidden;
background: #999;
}
/* styling */
.container {
background: url("https://picsum.photos/900/800");
background-repeat: no-repeat;
background-size: cover;
color: transparent;
-webkit-background-clip: text;
background-clip: text;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.container .image-text {
font-size: 5em;
font-weight: normal;
text-align: center;
transition: transform 2s linear;
}
.container .image-text:hover {
transform: scale(200);
}
<div class="container">
<div class="image-text">
Hover
</div>
</div>
看起来 Chrome 没有正确呈现。确实如此,当您使用 zoom
时,您只是失去了过渡...
@import url('https://fonts.googleapis.com/css2?family=Rubik:wght@900&display=swap');
.container {
font-family: 'Rubik', sans-serif;
background: url("https://picsum.photos/900/800");
background-repeat: no-repeat;
background-size: cover;
color: transparent;
-webkit-background-clip: text;
background-clip: text;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.container .image-text {
font-size: 5em;
font-weight: normal;
text-align: center;
transition: transform 2s linear;
}
.container .image-text:hover {
-moz-transform: scale(200);
zoom: 200;
}
<div class="container">
<div class="image-text">
Hover
</div>
</div>
问题是任何类型的转换都会创建新的堆叠上下文,因此剪辑文本无效。 [这是 CSS 属性 比例尺为您做的事情之一 - 使它不再是一个转换 - 但 Chrome/Edge 不支持它。
如果我们取消比例变换,而是增加字体大小和过渡,您会得到我认为是您想要的效果:
/* font */
@import url('https://fonts.googleapis.com/css2?family=Rubik:wght@900&display=swap');
/* reset */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Rubik', sans-serif;
}
body,
html {
min-height: 100vh;
width: 100vw;
overflow-x: hidden;
background: #999;
}
/* styling */
.container {
background: url("https://picsum.photos/900/800");
background-repeat: no-repeat;
background-size: cover;
color: transparent;
-webkit-background-clip: text;
background-clip: text;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.container .image-text {
font-size: 5em;
font-weight: normal;
text-align: center;
transition: font-size 2s linear;
}
.container .image-text:hover {
font-size: 200em;
}
<div class="container">
<div class="image-text">
Hover
</div>
</div>
我正在 CSS 中尝试一个东西,其中文本的背景是图像,当我们将鼠标悬停在文本上时,它会缩放到非常大的数字,即用作字体颜色的图像显示的数字完全起来。它在 Mozilla Firefox 上运行完美,但 CSS 的转换 属性 似乎在 Chrome 上被破坏并且文本在悬停在 Chrome.
上时消失了/* font */
@import url('https://fonts.googleapis.com/css2?family=Rubik:wght@900&display=swap');
/* reset */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Rubik', sans-serif;
}
body,
html {
min-height: 100vh;
width: 100vw;
overflow-x: hidden;
background: #999;
}
/* styling */
.container {
background: url("https://picsum.photos/900/800");
background-repeat: no-repeat;
background-size: cover;
color: transparent;
-webkit-background-clip: text;
background-clip: text;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.container .image-text {
font-size: 5em;
font-weight: normal;
text-align: center;
transition: transform 2s linear;
}
.container .image-text:hover {
transform: scale(200);
}
<div class="container">
<div class="image-text">
Hover
</div>
</div>
看起来 Chrome 没有正确呈现。确实如此,当您使用 zoom
时,您只是失去了过渡...
@import url('https://fonts.googleapis.com/css2?family=Rubik:wght@900&display=swap');
.container {
font-family: 'Rubik', sans-serif;
background: url("https://picsum.photos/900/800");
background-repeat: no-repeat;
background-size: cover;
color: transparent;
-webkit-background-clip: text;
background-clip: text;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.container .image-text {
font-size: 5em;
font-weight: normal;
text-align: center;
transition: transform 2s linear;
}
.container .image-text:hover {
-moz-transform: scale(200);
zoom: 200;
}
<div class="container">
<div class="image-text">
Hover
</div>
</div>
问题是任何类型的转换都会创建新的堆叠上下文,因此剪辑文本无效。 [这是 CSS 属性 比例尺为您做的事情之一 - 使它不再是一个转换 - 但 Chrome/Edge 不支持它。
如果我们取消比例变换,而是增加字体大小和过渡,您会得到我认为是您想要的效果:
/* font */
@import url('https://fonts.googleapis.com/css2?family=Rubik:wght@900&display=swap');
/* reset */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Rubik', sans-serif;
}
body,
html {
min-height: 100vh;
width: 100vw;
overflow-x: hidden;
background: #999;
}
/* styling */
.container {
background: url("https://picsum.photos/900/800");
background-repeat: no-repeat;
background-size: cover;
color: transparent;
-webkit-background-clip: text;
background-clip: text;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.container .image-text {
font-size: 5em;
font-weight: normal;
text-align: center;
transition: font-size 2s linear;
}
.container .image-text:hover {
font-size: 200em;
}
<div class="container">
<div class="image-text">
Hover
</div>
</div>