📅  最后修改于: 2023-12-03 15:10:48.835000             🧑  作者: Mango
悬停(hover)状态是网页交互中非常常用的一种效果,可以在用户鼠标移动到某个元素时,改变其外观或显示额外的信息。使用 TypeScript 编写样式化的组件悬停效果可以提高代码的可读性和可维护性,避免出现样式冲突等问题。
首先,我们需要创建一个基本的 React 组件,例如:
import React from 'react';
interface IProps {
text: string;
}
const HoverableComponent: React.FC<IProps> = ({ text }) => {
return <div>{text}</div>;
};
export default HoverableComponent;
接下来,我们要在样式中定义 :hover
伪类,并设置相应的样式。这里我们使用 CSS-in-JS 工具 styled-components 来管理样式,例如:
import styled from 'styled-components';
const Container = styled.div`
padding: 10px;
background-color: #eee;
border-radius: 5px;
transition: all 0.2s ease-in-out;
&:hover {
background-color: #ccc;
}
`;
然后将原有组件包裹在上面定义的容器组件中:
import React from 'react';
import styled from 'styled-components';
interface IProps {
text: string;
}
const Container = styled.div`
padding: 10px;
background-color: #eee;
border-radius: 5px;
transition: all 0.2s ease-in-out;
&:hover {
background-color: #ccc;
}
`;
const HoverableComponent: React.FC<IProps> = ({ text }) => {
return <Container>{text}</Container>;
};
export default HoverableComponent;
如果需要在悬停时额外显示一些信息,可以通过 CSS 来实现:
const Container = styled.div`
position: relative;
padding: 10px;
background-color: #eee;
border-radius: 5px;
transition: all 0.2s ease-in-out;
&:hover {
background-color: #ccc;
&::before {
content: '这是额外的信息';
position: absolute;
bottom: 5px;
left: 50%;
transform: translateX(-50%);
padding: 5px;
background-color: rgba(0, 0, 0, 0.8);
color: #fff;
border-radius: 5px;
z-index: 1;
}
}
`;
这里使用 ::before
伪类来添加一个绝对定位的元素,显示额外信息。
最后,我们可以使用这个自带悬停效果的组件了:
import React from 'react';
import styled from 'styled-components';
interface IProps {
text: string;
}
const Container = styled.div`
position: relative;
padding: 10px;
background-color: #eee;
border-radius: 5px;
transition: all 0.2s ease-in-out;
&:hover {
background-color: #ccc;
&::before {
content: '这是额外的信息';
position: absolute;
bottom: 5px;
left: 50%;
transform: translateX(-50%);
padding: 5px;
background-color: rgba(0, 0, 0, 0.8);
color: #fff;
border-radius: 5px;
z-index: 1;
}
}
`;
const HoverableComponent: React.FC<IProps> = ({ text }) => {
return <Container>{text}</Container>;
};
export default HoverableComponent;
通过使用 TypeScript 和 CSS-in-JS 工具,在组件中添加样式可以快速地为网页添加悬停效果,并且能够方便地管理组件样式,避免样式冲突等问题。