#html #css #reactjs
#HTML #css #reactjs
Вопрос:
Я использовал элемент span и элемент reactstrap Nav в своем компоненте React. В браузере элементы html выглядят следующим образом
<div class="alignRegFSBackContentsInSingleRow">
<span class="angleLeftNavigateBack"/>
<ul class="nav">
<li class="nav-item">
<a class="sc-bdVaJa hBLssO nav-link" id="wizardPreviousButton">Basic Info</a>
</li>
</ul>
<ul class="nav" id="nextButtonNav">
<li class="nav-item" id="nextButtonNavItem">
<a class="sc-bwzfXH bDoCBt nav-link" id="wizardNextButton">Collateral Details</a>
</li>
</ul>
<span class="angleRightNavigateBack"/>
</div>
Ниже приведен CSS-код контейнера div
.alignRegFSBackContentsInSingleRow{
display:flex;
flex-direction:row;
max-width: fit-content;
height: 20px;
}
CSS — это два элемента со стрелками, для которых я использую промежутки
.angleLeftNavigateBack::after{
content: "f104";
font-family: "FontAwesome";
font-size: medium;
padding-left: 10px;
padding-top: 0px;
padding-right: 0px;
padding-bottom: 0px;
}
.angleRightNavigateBack::after{
content: "f105";
font-family: "FontAwesome";
font-size: medium;
padding-left: 5px;
padding-top: 0px;
padding-right: 0px;
padding-bottom: 0px;
}
Мое требование — выровнять второй набор элементов и по крайнему правому краю внутри контейнера div. Я попытался использовать margin-left: auto для диапазона и ul. Также попробовал justify-content: пробел между разделом контейнера. Также пробовал float: прямо на ul и span, но ничего не работает
Пожалуйста, помогите. Я определенно упускаю что-то глупое здесь
Ссылка на Codesandbox здесь: https://2f095.csb.app /
Комментарии:
1. вы пробовали использовать
display:flex; width:100%
или использоватьdisplay:flex; flex-grow:1
свойства? Если возможно, пожалуйста, создайте какой-нибудь рабочий пример наstackbltiz
или на любом другом подходящем портале и поделитесь ссылкой. Нам будет полезно понять это более четко.2. Я не уверен, что вы ищете, поэтому не собираюсь давать ответ, но одна вещь, которая сразу портит ваш HTML, заключается в том, что вы не можете закрывать такие элементы span. Использовать <s pan></span>. Другая вещь, на которую я бы рекомендовал обратить внимание, — это атрибут CSS self-align .
3. Я добавил стиль margin-left: ‘auto’ ко второму диапазону с помощью css-класса angleRightNavigateBack выше и изменил максимальную ширину на 100% в классе alignRegFSBackContentsInSingleRow css, и он выровнялся по правому углу. Я думаю, что проблема со вторым <ul/> только сейчас. Я присвоил ul значение margin-left: ‘auto’, но оно неправильно выравнивается по правому краю
4. @HimanshuSaxena вот ссылка на codesandbox 2f095.csb.app
Ответ №1:
Я взглянул на вашу песочницу и, наконец, заметил, что вы дважды использовали навигационный компонент в своем div. Я никогда раньше не пытался использовать две навигации в одном div, но я бы предположил, что bootstrap применяет к ним стиль, который затрудняет выполнение того, что вы пытаетесь сделать. Я полагаю, что смог применить стиль к общему элементу навигации, чтобы выполнить то, что вы пытаетесь сделать, устранив один из компонентов навигации и включив оба элемента навигации в один и тот же nav.
<div className="alignAmendFSBackContentsInSingleRow">
<span className="angleLeftNavigateBack"></span>
<Nav className="navFormatting">
<NavItem>
<StyledLink
id="wizardPreviousButton"
onClick={() => {
this.previousButtonClick();
}}
>
Back
</StyledLink>
</NavItem>
<NavItem id="nextButtonNavItem">
<NextButtonStyledLink id="wizardNextButton">
Next
</NextButtonStyledLink>
</NavItem>
</Nav>
<span
style={{ marginLeft: "auto" }}
className="angleRightNavigateBack"
></span>
</div>
Они стилизуются в файле styles.css ниже:
.App {
font-family: sans-serif;
}
.navFormatting {
display: flex;
width: 100vw;
padding: 0;
margin: 1rem 0;
list-style: none;
flex-direction: row;
justify-content: space-between;
}
.angleRightNavigateBack::after {
content: "f105";
font-family: "FontAwesome";
font-size: medium;
}
.angleLeftNavigateBack::after {
content: "f104";
font-family: "FontAwesome";
font-size: medium;
}
.alignAmendFSBackContentsInSingleRow {
display: flex;
flex-direction: row;
max-width: 100%;
height: 20px;
}
Вероятно, существуют другие методы, которые могли бы выполнить то, что вы пытаетесь сделать с двумя навигационными компонентами, но я надеюсь, что это решение поможет дать некоторые рекомендации.
Комментарии:
1. Хотел бы я дать вам 100 баллов за это. Решена моя проблема
2. Я рад, что смог помочь!
Ответ №2:
Сохранив весь ваш код таким, какой он есть, я просто немного изменил ваш CSS. Только что добавлены flex
свойства для .navFormatting
класса, ниже приведен измененный код.
.navFormatting li {
display: flex;
width: 100%;
}
.navFormatting li:first-child {
justify-content: flex-start;
}
.navFormatting li:last-child {
justify-content: flex-end;
}
import "./styles.css";
import { Nav, NavItem } from "reactstrap";
import StyledLink from "./styledLink";
import NextButtonStyledLink from "./nextbuttonstyledLink";
export default function App() {
return (
<div className="alignAmendFSBackContentsInSingleRow">
<span className="angleLeftNavigateBack"></span>
<Nav className="navFormatting">
<NavItem>
<StyledLink
id="wizardPreviousButton"
onClick={() => {
this.previousButtonClick();
}}
>
Back
</StyledLink>
</NavItem>
<NavItem id="nextButtonNavItem">
<NextButtonStyledLink id="wizardNextButton">
Next
</NextButtonStyledLink>
</NavItem>
</Nav>
<span
style={{ marginLeft: "auto" }}
className="angleRightNavigateBack"
></span>
</div>
);
}
.App {
font-family: sans-serif;
}
.navFormatting {
display: flex;
width: 100%;
margin:8px;
padding:0;
}
.navFormatting li {
display: flex;
width: 100%;
}
.navFormatting li:first-child {
justify-content: flex-start;
}
.navFormatting li:last-child {
justify-content: flex-end;
}
.angleRightNavigateBack::after {
content: "f105";
font-family: "FontAwesome";
font-size: medium;
}
.angleLeftNavigateBack::after {
content: "f104";
font-family: "FontAwesome";
font-size: medium;
}
.alignAmendFSBackContentsInSingleRow {
display: flex;
flex-direction: row;
max-width: 100%;
padding: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
Ответ №3:
Вы можете использовать следующий код для настройки положения неупорядоченных списков:
.nav{
padding-left:0px;
}
Комментарии:
1. Привет всем, есть мысли?