Как приклеить один край блока, чтобы он не ездил?
Всем привет! Мне нужна ваша помощь. То ли я гуглить не умею нормально, но найти ответ на свой вопрос я не смогла. Суть заключается в том, что мне нужно, чтоб там где красная стрелочка, край инпута с кнопкой должен быть приклеен. а там где синяя стрелочка, при выборе определенной категории белый инпут должен уменьшаться или увеличиваться в зависимости от длины категории. а сейчас получается инпут белый становится меньше, но при этом правый край с кнопкой прыгает и расстояние до следующего блока то увеличивается то уменьшается
Подробнее на Codepen https://codepen.io/viktoriag373/pen/vYgOjYa
html
<div class="page" id="page">
<!-- Header -->
<header class="header">
<div class="header-top">
<div class="container">
<nav class="header-menu menu" >
<ul class="menu__list">
<li class="menu__item"><a href="" class="menu__link">Компания</a></li>
<li class="menu__item"><a href="" class="menu__link">Портфолио</a></li>
<li class="menu__item"><a href="" class="menu__link">Проектирование</a></li>
<div class="vertical-line"></div>
<li class="menu__item"><a href="" class="menu__link">Ресторанам</a></li>
<li class="menu__item"><a href="" class="menu__link">Застройщикам</a></li>
<li class="menu__item"><a href="" class="menu__link">Гос.заказчикам</a></li>
<li class="menu__item"><a href="" class="menu__link">Таблет-питание</a></li>
<div class="vertical-line"></div>
<li class="menu__item"><a href="" class="menu__link">Сервис</a></li>
<li class="menu__item"><a href="" class="menu__link">Контакты</a></li>
<li class="menu__item"><a href="" class="menu__link"><img src="/assets/images/email.svg" alt="" class="menu__icon-mail"> [email protected]</a></li>
<li class="menu__item menu__item-tel">
<a href="" class="menu__link">
<img src="/assets/images/telephone.svg" alt="" class="menu__icon-tel">
8 495 790-72-05
</a>
<div class="menu__contact-us modal-contact-us">
<span class="modal-contact-us__close"></span>
<div class="modal-contact-us__communication-methods">
<div class="modal-contact-us__number">
<p class="modal-contact-us__tel">8 495 790-72-05</p>
<p class="modal-contact-us__additional-info">Мы принимаем звонки без выходных</p>
</div>
<div class="modal-contact-us__methods">
<p class="modal-contact-us__choice">Выберите способ связи:</p>
<ul class="modal-contact-us__list">
<li class="modal-contact-us__item"><img src="/assets/images/telephone_black.svg" alt="" class="modal-contact-us__social-icon modal-contact-us__icon-tel"><a href="" class="modal-contact-us__link">Мобильный</a></li>
<li class="modal-contact-us__item"><img src="/assets/images/viber.png" alt="" class="modal-contact-us__social-icon"><a href="" class="modal-contact-us__link">Viber</a></li>
<li class="modal-contact-us__item"><img src="/assets/images/telegram.png" alt="" class="modal-contact-us__social-icon"><a href="" class="modal-contact-us__link">Telegram</a></li>
<li class="modal-contact-us__item"><img src="/assets/images/whatsapp.png" alt="" class="modal-contact-us__social-icon"><a href="" class="modal-contact-us__link">Whatsapp</a></li>
</ul>
</div>
</div>
<form class="modal-contact-us__form">
<p class="modal-contact-us__callback">Обратный звонок:</p>
<p class="modal-contact-us__additional-info">Мы перезвоним в течении часа</p>
<label for="name" class="modal-contact-us__label">Имя:</label>
<input type="text" class="modal-contact-us__input" id="name" autocomplete="off">
<label for="tel" class="modal-contact-us__label">Телефон:</label>
<input type="tel" class="modal-contact-us__input" id="tel">
<button type="submit" class="modal-contact-us__button button">Отправить</button>
</form>
</div> </li>
</ul>
</nav> </div>
</div>
<div class="header-center">
<div class="container">
<div class="header-center__wrap">
<div class="header__logo footer__logo logo">
<p class="logo__title">Столовая.РУ</p>
</div> <div class="header-search search">
<ul class="search-categories">
<li class="search-categories__list">
<a href="#" class="search-categories__filter">
<span class="search-categories__filter-value">Все</span>
</a>
<ul class="search-categories__subnav">
<p class="search-categories__category">Выбирете категорию:</p>
<li class="search-categories__category-item"><a href="#" class="search-categories__category-link">Все</a></li>
<li class="search-categories__category-item"><a href="#" class="search-categories__category-link">Тепловое</a></li>
<li class="search-categories__category-item"><a href="#" class="search-categories__category-link">Холодильное</a></li>
<li class="search-categories__category-item"><a href="#" class="search-categories__category-link">Электромеханическое</a></li>
<li class="search-categories__category-item"><a href="#" class="search-categories__category-link">Посудомоечное</a></li>
<li class="search-categories__category-item"><a href="#" class="search-categories__category-link">Барное</a></li>
<li class="search-categories__category-item"><a href="#" class="search-categories__category-link">Хлебопекарное</a></li>
<li class="search-categories__category-item"><a href="#" class="search-categories__category-link">Линии раздачи</a></li>
<li class="search-categories__category-item"><a href="#" class="search-categories__category-link">Нейтральное</a></li>
<li class="search-categories__category-item"><a href="#" class="search-categories__category-link">Для фаст фуда</a></li>
<li class="search-categories__category-item"><a href="#" class="search-categories__category-link">Для залов</a></li>
<li class="search-categories__category-item"><a href="#" class="search-categories__category-link">Весовое</a></li>
</ul>
</li>
</ul>
<form class="search-query">
<input class="search-query__input" type="search">
<button type="button" class="search-query__button"></button>
</form>
</div> <div class="header-center__supplier-portal">
<p class="header-center__supplier-text">Мы на портале поставщиков</p>
</div>
<a href="#" class="header-center__basket basket">
<div class="basket__goods-count">
<p class="basket__quantity">12</p>
</div>
<div class="basket__sum">
<p class="basket__sum-title">Сумма</p>
<span class="basket__total-money">150 000 руб</span>
</div>
</a>
</div>
</div>
</div>
<div class="header-bottom">
<div class="container" style="height: 100px;">
Lorem ipsum dolor sit amet consectetur adipisicing elit. <br>
Qui, omnis sed nihil itaque commodi illo ut aperiam neque nobis nisi tempore, <br>
dolor quis pariatur iure culpa delectus voluptatibus saepe nostrum?
</div>
</div>
</header>
<!-- Main -->
<main class="main">
<div class="container">
</div>
</main>
</div>
css
@charset "UTF-8";
/* http://meyerweb.com/eric/tools/css/reset/
v2.0-modified | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* make sure to set some focus styles for accessibility */
:focus {
outline: 0;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
input[type=search]::-webkit-search-cancel-button,
input[type=search]::-webkit-search-decoration,
input[type=search]::-webkit-search-results-button,
input[type=search]::-webkit-search-results-decoration {
-webkit-appearance: none;
-moz-appearance: none;
}
input[type=search] {
-webkit-appearance: none;
-moz-appearance: none;
box-sizing: content-box;
}
textarea {
overflow: auto;
vertical-align: top;
resize: vertical;
}
/**
* Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
*/
audio,
canvas,
video {
display: inline-block;
*display: inline;
*zoom: 1;
max-width: 100%;
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
* Known issue: no IE 6 support.
*/
[hidden] {
display: none;
}
/**
* 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
* `em` units.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-size: 100%;
/* 1 */
-webkit-text-size-adjust: 100%;
/* 2 */
-ms-text-size-adjust: 100%;
/* 2 */
}
/**
* Address `outline` inconsistency between Chrome and other browsers.
*/
a:focus {
outline: thin dotted;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/**
* 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
* 2. Improve image quality when scaled in IE 7.
*/
img {
border: 0;
/* 1 */
-ms-interpolation-mode: bicubic;
/* 2 */
}
/**
* Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
*/
figure {
margin: 0;
}
/**
* Correct margin displayed oddly in IE 6/7.
*/
form {
margin: 0;
}
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct color not being inherited in IE 6/7/8/9.
* 2. Correct text not wrapping in Firefox 3.
* 3. Correct alignment displayed oddly in IE 6/7.
*/
legend {
border: 0;
/* 1 */
padding: 0;
white-space: normal;
/* 2 */
*margin-left: -7px;
/* 3 */
}
/**
* 1. Correct font size not being inherited in all browsers.
* 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
* and Chrome.
* 3. Improve appearance and consistency in all browsers.
*/
button,
input,
select,
textarea {
font-size: 100%;
/* 1 */
margin: 0;
/* 2 */
vertical-align: baseline;
/* 3 */
*vertical-align: middle;
/* 3 */
}
/**
* Address Firefox 3+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
button,
input {
line-height: normal;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
* Correct `select` style inheritance in Firefox 4+ and Opera.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
* 4. Remove inner spacing in IE 7 without affecting normal text inputs.
* Known issue: inner spacing remains in IE 6.
*/
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
/* 2 */
cursor: pointer;
/* 3 */
*overflow: visible;
/* 4 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* 1. Address box sizing set to content-box in IE 8/9.
* 2. Remove excess padding in IE 8/9.
* 3. Remove excess padding in IE 7.
* Known issue: excess padding remains in IE 6.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box;
/* 1 */
padding: 0;
/* 2 */
*height: 13px;
/* 3 */
*width: 13px;
/* 3 */
}
/**
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield;
/* 1 */
/* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari 5 and Chrome
* on OS X.
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Remove inner padding and border in Firefox 3+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* 1. Remove default vertical scrollbar in IE 6/7/8/9.
* 2. Improve readability and alignment in all browsers.
*/
textarea {
overflow: auto;
/* 1 */
vertical-align: top;
/* 2 */
}
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}
html,
button,
input,
select,
textarea {
color: #222;
}
::-moz-selection {
background: #b3d4fc;
text-shadow: none;
}
::selection {
background: #b3d4fc;
text-shadow: none;
}
img {
vertical-align: middle;
}
fieldset {
border: 0;
margin: 0;
padding: 0;
}
textarea {
resize: vertical;
}
.chromeframe {
margin: 0.2em 0;
background: #ccc;
color: #000;
padding: 0.2em 0;
}
html {
font-size: 62.5%;
}
body {
background-color: #f4f2f2;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1.6rem;
line-height: 1.5;
color: #121212;
}
body.no-scroll {
overflow: hidden;
}
*,
*:before,
*:after {
box-sizing: border-box;
}
a {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
/* Blocks */
.header-top {
background-color: #00aa4b;
}
.header-center {
background-color: #e8e7e7;
}
.header-center__wrap {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: justify;
justify-content: space-between;
}
.header-center__supplier-portal {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: center;
justify-content: center;
-ms-flex: 0 1 10%;
flex: 0 1 10%;
margin-left: 2rem;
}
.header-center__supplier-img {
width: 3.8rem;
}
.header-center__supplier-text {
margin-left: 1rem;
font-size: 1.4rem;
color: #787878;
line-height: 1.7rem;
}
.header-bottom {
background-color: #fff;
box-shadow: 0px 15px 30px -7px rgba(0, 0, 0, 0.2);
}
.container {
max-width: 160rem;
margin: 0 auto;
padding-left: 1rem;
padding-right: 1rem;
}
@media screen and (max-width: 767px) {
.container {
padding-left: 1.5rem;
padding-right: 1.5rem;
}
}
.modal-contact-us {
width: 75.5rem;
position: absolute;
top: 5rem;
right: 17rem;
background: #fff;
padding: 5rem 6rem 6rem 5rem;
display: -ms-flexbox;
display: flex;
-ms-flex-pack: justify;
justify-content: space-between;
-ms-flex-align: top;
align-items: top;
z-index: 100;
display: none;
}
.modal-contact-us__close {
position: absolute;
right: 1rem;
top: 1rem;
width: 32px;
height: 32px;
opacity: 0.3;
}
.modal-contact-us__close:hover {
opacity: 1;
cursor: pointer;
transition: 0.5s;
}
.modal-contact-us__close:before, .modal-contact-us__close:after {
position: absolute;
left: 15px;
content: ' ';
height: 30px;
width: 2px;
background-color: #333;
}
.modal-contact-us__close:before {
-webkit-transform: rotate(35deg);
transform: rotate(35deg);
}
.modal-contact-us__close:after {
-webkit-transform: rotate(-35deg);
transform: rotate(-35deg);
}
.modal-contact-us__communication-methods {
-ms-flex: 0 1 44%;
flex: 0 1 44%;
}
.modal-contact-us__tel {
font-size: 2.1rem;
color: #00aa4b;
font-weight: 600;
}
.modal-contact-us__additional-info {
color: #787878;
font-size: 1.6rem;
margin-bottom: 2rem;
}
.modal-contact-us__choice {
margin-bottom: 2rem;
font-size: 1.5rem;
}
.modal-contact-us__item {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
margin-bottom: 0.7rem;
}
.modal-contact-us__social-icon {
width: 2rem;
}
.modal-contact-us__icon-tel {
-webkit-transform: rotate(15deg);
transform: rotate(15deg);
}
.modal-contact-us__link {
color: #000;
margin-left: 1rem;
font-size: 1.8rem;
position: relative;
}
.modal-contact-us__link::after {
content: "";
display: block;
position: absolute;
width: 0%;
height: 0.1rem;
transition: all 0.5s ease 0s;
background-color: #bababa;
}
.modal-contact-us__link:hover {
text-decoration: none;
}
.modal-contact-us__link:hover::after {
width: 100%;
}
.modal-contact-us__form {
-ms-flex: 0 1 42%;
flex: 0 1 42%;
}
.modal-contact-us__callback {
font-size: 2.1rem;
line-height: 3.4rem;
font-weight: 500;
}
.modal-contact-us__label {
display: block;
font-size: 1.5rem;
}
.modal-contact-us__input {
margin-left: 0.1rem;
border: 0;
border-bottom: 1px solid #bababa;
margin-bottom: 2rem;
font-size: 1.6rem;
padding: 0.5rem 0;
}
.modal-contact-us__input:focus {
transition: 0.5s;
border-bottom: 1px solid #ffaf2d;
}
.button {
background-color: #ffaf2d;
color: #fff;
border: 0;
border-radius: 2.2rem;
padding: 1.3rem 2.5rem;
}
.button:hover {
background-color: #ffa30e;
transition: 0.7s;
}
.menu__list {
display: -ms-flexbox;
display: flex;
-ms-flex-pack: distribute;
justify-content: space-around;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.menu__link {
display: -ms-flexbox;
display: flex;
color: #fff;
padding: 1.2rem 2rem 1.2rem 2rem;
position: relative;
}
.menu__link:hover {
background: #33bb6f;
text-decoration: none;
transition: 0.5s;
}
.menu__item-tel:hover .modal-contact-us {
display: -ms-flexbox;
display: flex;
}
.menu__icon-mail {
width: 2rem;
margin-right: 1rem;
}
.menu__icon-tel {
width: 2rem;
margin-right: 0.5rem;
-webkit-transform: rotate(20deg);
transform: rotate(20deg);
}
.vertical-line {
content: '';
height: 2.5rem;
width: 0.1rem;
background: #33bb6f;
margin: 1.2rem 0;
}
.header__logo {
margin: 1rem 1rem 1rem 0;
-ms-flex: 0 1 16%;
flex: 0 1 16%;
}
.logo {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
}
.logo__img {
width: 4rem;
}
.logo__title {
font-size: 3.3rem;
margin-left: 0.8rem;
}
.header-search {
margin-right: 1rem;
}
.search {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
-ms-flex: 0 1 56%;
flex: 0 1 56%;
}
.search-categories__list {
position: relative;
}
.search-categories__filter {
padding: 0.85rem 0.5rem 0.95rem 1.5rem;
white-space: nowrap;
/* Запрещаем перенос строк */
color: #777;
background-color: #f1f1f1;
font-weight: 500;
border-radius: 0.7rem 0 0 0.7rem;
margin-right: 0.2rem;
}
.search-categories__filter:hover {
text-decoration: none;
}
.search-categories__filter-value {
margin-right: 0.5rem;
}
.search-categories__subnav {
display: none;
position: absolute;
top: 3.4rem;
left: 0.2rem;
z-index: 100;
background-color: #f1f1f1;
padding: 1.5rem 3.5rem 4rem 1.5rem;
}
.search-categories__subnav--visible {
display: block;
}
.search-categories__category {
color: #777;
font-weight: 400;
margin-bottom: 2rem;
}
.search-categories__category-item {
margin-bottom: 0.5rem;
line-height: 2rem;
}
.search-categories__category-item:last-child {
margin-bottom: 0;
}
.search-categories__category-link {
color: #343434;
}
.search-categories__category-link:hover {
transition: 0.5s;
text-decoration: none;
color: #00aa4b;
}
.search-query {
display: -ms-flexbox;
display: flex;
-ms-flex: 0 1 90%;
flex: 0 1 90%;
}
.search-query__input {
-ms-flex: 0 1 100%;
flex: 0 1 100%;
font-size: 1.8rem;
border: none;
padding: 0.9rem 2.5rem 0.9rem;
}
.search-query__button {
background-color: #ffaf2d;
border: none;
padding: 0.82rem 1.3rem 0.84rem 1.3rem;
border-radius: 0 0.7rem 0.7rem 0;
}
.basket {
display: -ms-flexbox;
display: flex;
-ms-flex: 0 1 9%;
flex: 0 1 9%;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: center;
justify-content: center;
padding: 2rem 1.5rem;
white-space: nowrap;
/* Запрещаем перенос строк */
cursor: pointer;
}
.basket:hover {
text-decoration: none;
transition: 0.6s;
background-color: #ffaf2d;
}
.basket:hover .basket__quantity,
.basket:hover .basket__sum-title,
.basket:hover .basket__total-money {
color: #fff;
}
.basket__goods-count {
position: relative;
}
.basket__quantity {
color: #ffaf2d;
font-size: 1.4rem;
font-weight: 500;
position: absolute;
top: -1.3rem;
left: 1.2rem;
}
.basket__icon {
width: 3rem;
}
.basket__sum {
margin-left: 1rem;
}
.basket__sum-title {
font-size: 1.4rem;
color: #787878;
line-height: 1rem;
}
.basket__total-money {
font-weight: 500;
color: #171717;
}
js
const searchCategoriesFilter = document.querySelector(".search-categories__filter");
const searchCategoriesSubnav = document.querySelector(".search-categories__subnav");
const searchCategoriesCategoryItem = document.querySelectorAll(".search-categories__category-item");
const searchCategoriesFilterValue = document.querySelector(".search-categories__filter-value");
function categoriesSubnavToggle() {
searchCategoriesSubnav.classList.toggle("search-categories__subnav--visible");
}
function categoriesSubnavClose() {
searchCategoriesSubnav.classList.remove("search-categories__subnav--visible");
}
function onCategoryClick(event) {
searchCategoriesFilterValue.innerText = event.target.innerText;
categoriesSubnavClose();
}
searchCategoriesFilter.onclick = categoriesSubnavToggle;
for (let index = 0; index < searchCategoriesCategoryItem.length; index++) {
searchCategoriesCategoryItem[index].onclick = onCategoryClick;
}
Ответы (1 шт):
Автор решения: Bear Vorkuta
→ Ссылка
попробуйте в css такие изменения:
.search-query {
display: -ms-flexbox;
display: flex;
-ms-flex: 1;
flex: 1;