CSS所有样式都应用于页面加载的转换

问题描述 投票:3回答:1

我有一些代码可以在悬停时为按钮设置动画,但是当我重新加载我的页面时,css会应用我在按钮和按钮文本上设置的1s过渡。

我将过渡设置为仅适用于按钮的宽度,这是有效的,但如果我想动画多个事情,我必须选择只动画那些,这有点烦人看到,因为我以前没有遇到过这个问题。

我在Chromebook上使用Chrome 72.0.3626.122

html {
	width: 100%;
	height: 100%;
}

body,
span {
	margin: 0;
	padding: 0;
}

.button {
	width: 120px;
	height: 40px;
	border: none;
	background-color: salmon;
	transition: 1s ease;
}

.button:hover {
	width: 200px;
}

.button-text {
	color: white;
	font-size: 17px;
	transition: 1s ease;
}

.button:hover .button-text {
	color: lightgray;
}
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Button hover</title>
	<link rel="stylesheet" href="style.css">
</head>
<body>
	<button class="button">
		<span class="button-text">Hover me</span>
	</button>
</body>
</html>

这会在页面重新加载后的1秒内应用所有css,而不是立即加载所有css并在悬停时转换

css animation css-transitions
1个回答
0
投票

这会在页面重新加载后的1秒内应用所有css,而不是立即加载所有css并在悬停时转换

因此,您希望按钮在页面加载后1秒钟自动变宽并自动变暗,对吗?

CSS动画应该在这里帮助你,因为它们是自我调用的,而CSS转换需要一个触发事件。

// Call the keyframes
.button { animation: expand 0.55s linear 2s 1 normal forwards running; }
.button-text { animation: color-shift 0.55s linear 2s 1 normal forwards running; }

// Keyframes
@keyframes expand {
    0% { width: 120px; }
    100% { width: 200px; }
}

@keyframes color-shift {
    0% { color: white; }
    100% { color: lightgray; }
}

我已经使用你的HTML和CSS来显示差异in this CodePen,以及一些额外的细节。希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.