css - CSS 样式:如何在 React 中重新创建 iOS 14 段控件?
问题描述
我正在尝试在 React 中重新创建 iOS 14 段控制,但分隔线有问题。如何使所选选项卡旁边的分隔线消失?
我尝试扩展填充和边距以覆盖线条,但第一个和最后一个元素太宽的问题。
CSS大神能帮帮我吗?
网络示例
https://laurasandoval.github.io/iOS13SegmentedControl/
SegmentedControlYears.tsx
// Imports: Dependencies
import React, { useEffect, useState } from 'react';
// Imports: TypeScript Types
import { SegmentedControlTabsYears } from '../types/types';
// TypeScript Type: Props
interface Props {
tabs: Array<SegmentedControlTabsYears>,
onSelection: (value: SegmentedControlTabsYears) => void,
};
// Component: Segmented Control (Years)
const SegmentedControlYears: React.FC<Props> = (props) => {
// React Hooks: State
const [ value, setValue ] = useState<SegmentedControlTabsYears>('2021');
// Set Initial Tab
useEffect(() => {
// Set Data
setValue(props.tabs[0] as SegmentedControlTabsYears);
}, []);
// Render Segment Tab Small Container Class Name
const renderSegmentTabSmallContainerClassName = (tab: SegmentedControlTabsYears) => {
// Selected Tab
if (tab === value) {
return 'segment-tab-years-container-selected';
}
// Unselected Tabs
else {
return 'segment-tab-years-container';
}
};
return (
<div id="segmented-control-years-container">
<div id="segmented-control-years-track-container">
<button className={renderSegmentTabSmallContainerClassName(tab)} onClick={() => setValue(tab)}>
<p className=segment-tab-years-text">{tab}</p>
</button>
</div>
</div>
);
};
// Exports
export default SegmentedControlYears;
SegmentedControlYears.css
#segmented-control-years-container {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
margin-top: 16px;
margin-bottom: 16px;
}
#segmented-control-years-track-container {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
text-align: center;
height: 30px;
background-color: #272729;
border-radius: 7px;
}
.segment-tab-years-container {
display: flex;
align-items: center;
justify-content: center;
height: 16px;
width: 75px;
background-color: transparent;
border: none;
border-right: 1px solid #646368;
}
.segment-tab-years-container:last-child {
background-color: transparent;
border: none;
}
.segment-tab-years-container-selected{
display: flex;
align-items: center;
justify-content: center;
height: 100%;
width: 75px;
background-color: #646368;
border: none;
border: 3px solid #272729;
border-radius: 7px;
}
.segment-tab-years-text{
font-family: -apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
font-size: 13px;
font-weight: 600;
letter-spacing: .4px;
color: #FFFFFF;
text-decoration: none;
margin: 0;
padding: 20px;
cursor: pointer;
}
解决方案
推荐阅读
- c# - .Net Framework 和 .Net Core 使用的 .Net Standard 2.0 dll 中的 NuGet 包
- javascript - 即在我将它们从我的项目中取出后抛出 SCRIPT1014 Invalid character
- python - Python 请求 - 在有页面时获取和保存图像
- ios - 如何在iOS swift中隐藏/查看标题视图表
- ios - UITextView 延迟 AttributedString 链接 SwiftUI
- javascript - 如何完全推迟加载 Google reCaptcha 直到页面完全加载
- python - 使用python读取json文件以在postgres中创建数据库
- python-3.x - KeyError:[]未在轴中找到
- moodle - 带有 R-Exams 的 Moodle 表的不同问题副本
- flutter - Flutter:setState 不更新 UI