javascript - 赋予边界向右导致未对齐问题
问题描述
我正在使用 react-bootstrap 制作带有 bootstrap-Accordion 的列表,并且对于选定的列表,我给出了背景颜色和一些边框
问题是
当我这样做时,在活动栏时,文本向右移动,即发生了一些未对齐,我不知道我需要做什么
return (
<div>
<div className={props.trigger_value ? "sidebar" : "sidebar_shrink"}>
<hr></hr>
<Accordion className="menue_group">
{data_json.map((item, index) => (
<>
<CustomToggle
eventKey={index}
handleClick={() => {
if (activeKey === index) {
setActiveKey(null);
setmenue_active(activeKey);
} else {
setActiveKey(index);
setmenue_active(index);
}
}}
>
{item.menu}
{item.submenu ? (
activeKey === index ? (
<i className="fas fa-angle-down float-right pr-3"></i>
) : (
<i className="fas fa-angle-up float-right pr-3"></i>
)
) : null}
</CustomToggle>
<div className="container-fluid">
{item.submenu &&
item.submenu.map((li, index1) => (
<Accordion.Collapse eventKey={index}>
<div key={index1}>
<div
className={
index1 === activeKey_submenu
? "submenue submenue_active container"
: "submenue container"
}
onClick={() => subMenue_click(index1)}
>
{li.menu}
</div>
</div>
</Accordion.Collapse>
))}
</div>
</>
))}
</Accordion>
<button className="btn btn-primary" onClick={props.triger_sidebar}>
test
</button>
</div>
</div>
);
解决方案
边框会影响元素的大小,因此如果您更改边框宽度,它将影响布局。你有几个选择:
- 将边框宽度设置为一致的值,并将颜色从透明切换到您的活动颜色。
.item {
border: 4px solid transparent;
}
.item.active {
border-color: red;
}
- 使用
box-shadow
而不是边框,它不会改变元素的大小,并且当与零模糊一起使用时,通常可以达到与边框相同的效果。如果没有插入阴影,z-index 可能会出现障碍。(后续元素在前面,可能会遮挡前一个元素的阴影。)
.item.active {
box-shadow: inset 4px 0 0 red;
}
将鼠标悬停在下面的每个示例(边框、框阴影、框阴影插图)上以查看差异。
- 由于不可见的 4px 边框,边框示例略宽。
- 第一个(非插入)box-shadow 示例将“边框”放置在元素之外。
- 插入框阴影示例将“边框”放置在元素内。
.item {
background: aliceblue;
max-width: 150px;
padding: 4px;
margin-bottom: 4px;
}
.border {
border-right: 4px solid transparent;
}
.border:hover {
border-right-color: red;
}
.shadow:hover {
box-shadow: 4px 0 0 red;
}
.shadow-inset:hover {
box-shadow: inset -4px 0 0 red;
}
<div class="item border">Border Color</div>
<div class="item shadow">Box Shadow</div>
<div class="item shadow-inset">Box Shadow Inset</div>
推荐阅读
- matlab - 在 Matlab 中截断单个表格单元格
- r - 计算多个数据同时性的 ICC
- python - 创建函数以根据值从数据框中提取数据
- sql-server - 如何从 SQL 或 Azure Synapse 中的多个列中获取最新的非空值
- vue.js - 如何设置 v-data-table 组顺序?
- exception - 在点击 Bigtable 时获取 OAuth 刷新令牌错误 UNAUTHORIZED ERROR
- regex - 如何将“命令行参数”样式字符串与正则表达式匹配?
- azure-java-sdk - DataLakeServiceClient 在使用 Java SDK 时抛出类型定义错误:[simple type, class com.azure.core.http.netty.NettyAsyncHttpClient]
- if-statement - 是否可以使用行号作为谷歌表格中的逻辑表达式来执行 IF/THEN 语句?
- google-bigquery - 数据流作业失败并尝试在 Bigquery 上创建 temp_dataset