Как сделать другой раздел с отзывчивым поведением в HTML - PullRequest
0 голосов
/ 16 сентября 2018

привет, я очень новый дизайнер, пытающийся научиться проектировать

проблемы, указанные моим боссом:

  1. мой босс сказал, что ваше расположение семантически неверно
  2. строки выровнены неправильно
  3. не отвечает

он посоветовал мне:

  1. преобразовать его в flexbox, так как содержимое будет поступать динамически, flexbox wll handle
  2. сделать его таким отзывчивым, чтобы на основе content отзывчивость была сохранена

проблемное изображение:

enter image description here

*{
    margin: 0;
    padding: 0;
}

html{
    /* font-size: 62.5%; */
}

body{
    box-sizing: border-box;
    background: #ffffff;
    height: 100vh;
    padding: 2px;
    color: #A7A7A7;
}
header.main-header .main-navigation ul.nav{
    /* background: grey; */
    border-bottom:2px solid #E4E4E4;
    display:block;
    /* display:table; */
    width: 100%;
}

header.main-header .main-navigation ul.nav li{
   padding: 6px;
   border-right:1px solid #E4E4E4;
   position: relative;
   display:table-cell;
}
header.main-header .main-navigation ul.nav li::before{
  content: "";
  position: absolute;
}

header.main-header .main-navigation ul.nav li.active-nav{
    border-bottom: 3px solid #F89106;
}

#content_wrapper_search_etl{
    width: 100%;
}

#content_wrapper_search_etl::after{
    content:'';
    display: table;
    clear: both;
}

section{
    display: block;
}

.leftside-search-area{
    width: 13%;
    float: left;
    height: 98vh;
    /* background: green; */
    border-right: 1px solid #E4E4E4; 
}
.leftside-search-area input{
  border-left: none !important;
}

.center-search-area{
    width: 27%;
    float: left;
    height: 98vh;
    /* background: yellow; */
    border-right: 1px solid #E4E4E4;
}
.right-search-area{
    width: 49.3%;
    float: left;
    height: 98vh;
    /* background: orangered; */
}
.right-search-area input::-webkit-input-placeholder { /* Chrome */
    color:#FE8D51;
}
.center-search-area input::-webkit-input-placeholder { /* Chrome */
    color: #A1A1A1;
}
.right-search-area input,.center-search-area input,.leftside-search-area input{
    width: 101%;
    border: none;
    border: 1px solid #E4E4E4;
    border-top: none;
    height: 25px;
    border-right: none;
    outline: none;
    font-family: FontAwesome !important;
}

.vertical-box .box{
    display: flex;
    width: auto;
    height: 200px;
    border-bottom: 1px solid #E4E4E4;
    margin-top: 4px;
}

.vertical-box .box h4{
    font-size: 13px;
    font-weight: 300;
}

.vertical-box .box .tags ul{
   list-style: none;
}

.vertical-box .box .tags ul li{
   display: block;
   padding: 6px;
   background: #E5E5E7;
   margin-top: 19px;
 }

 .vertical-box .box .tags ul li.square{
    display: inline-block;  
    padding: 3px;
  }

.vertical-box .box .tags ul li.round{
    border-radius: 9px;
    padding: 4px 34px;
    font-size: 11px;
}

.vertical-box .box .tags ul li.tag-active{
    background: #FB8D58;
    color: #fff;
}
  <div id="main_container_blz">
      <header class="main-header">
          <nav class="main-navigation">
             <ul class="nav">
                 <li class="active-nav"><i class="fa fa-home"></i> Home</li>
                 <li><i class="fa fa-user"></i> Users</li>
                 <li><i class="fa fa-cog"></i> Settings</li>
             </ul>
          </nav>
      </header>
     <div id="content_wrapper_search_etl">
         <section class="leftside-search-area">
             <input type="search" placeholder="&#xf0b0; FILTER">
             <div class="vertical-box">
                 <div class="box">
                    <h4>File Types</h4>
                    <div class="tags">
                       <ul>
                           <li class="square tag-active"><i class="fa fa-video-camera"></i>
                           </li>
                           <li class="square"><i class="fa fa-music"></i>                           </li>
                           <li class="square"><i class="fa fa-picture-o"></i>                           </li> 
                       </ul>
                    </div>
                 </div>
                 <div class="box">
                   <h4>Date</h4>
                   <div class="tags">
                        <ul>
                            <li class="round tag-active">Today</li>
                            <li class="round">Yesterday</li>
                            <li class="round">Last week</li>
                       </ul>
                    </div>
                 </div>
                 <div class="box">
                     <h4>Status</h4>
                     <div class="tags">
                        <ul>
                            <li class="round">Today</li>
                            <li class="round">Today</li>
                            <li class="round">Today</li>
                         </ul>
                     </div>
                 </div>
             </div>
         </section>
         <section class="center-search-area">
                <input type="search" placeholder="&#xf002;    Search...">
                <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Corrupti, reiciendis. Officiis necessitatibus maiores labore quaerat ea eum maxime, ratione ut fugit in voluptatibus. Cum amet perspiciatis, quasi quae illum labore?</p>
         </section>
         <section class="right-search-area">
                <input type="search" placeholder="&#xf007;  Dhobi">
                <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Animi ipsum, saepe deleniti modi expedita minus amet doloribus impedit rem deserunt neque necessitatibus sequi nisi facilis harum tempora quae voluptate voluptatibus.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi nisi suscipit est modi exercitationem ipsum eaque, laborum iure hic nobis adipisci, magnam alias sit maxime repellat commodi quam! Numquam, repudiandae?</p>
         </section>
     </div>
  </div>

вот полный код (codepen): https://codepen.io/eabangalore/details/NLLRPv/ (пожалуйста, измените представление на редактор и раскройте его)

Пожалуйста, помогите мне заранее спасибо

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Улучшение отзывчивости

Я бы предложил использовать CSS Grid Layout , чтобы исправить вашу отзывчивость вопросы.

Просто добавьте display: grid в свою оболочку содержимого и укажите размер шаблона для каждого столбца, например:

#content_wrapper_search_etl{
    display: grid;
    grid-template-columns: max-content .5fr 1fr;
    width: 100%;
}

и удалите width из областей поиска: .leftside-search-area, .center-search-area и .right-search-area.

Исправление выравнивания границ

Установите width на 100%, а не 101% в своем поиске input с. Оставьте border: none; и установите только свойство border-bottom, чтобы исправить выравнивание границ:

.right-search-area input,.center-search-area input,.leftside-search-area input{
    width: 100%;
    border: none;
    border-bottom: 1px solid #E4E4E4;
    ...
}

Исправление активного nav подчеркивания

Удалить текущий стиль:

header.main-header .main-navigation ul.nav li.active-nav{
    border-bottom: 3px solid #F89106;
}

и использовать вместо него псевдоэлемент, например, ::before:

header.main-header .main-navigation ul.nav li.active-nav::before {
    bottom: -2px;
    left: 0;
    width: 100%;
    border-bottom: 3px solid #F89106;
}

Разветвленная ручка: https://codepen.io/knekk/pen/pOQxrQ?editors=1100

0 голосов
/ 18 сентября 2018

Здесь есть над чем поработать.Пройдусь по порядку, как они появятся на вашем изображении.

Выравнивание подчеркивания навигации

Верхняя граница элемента под выбранной навигацией имеет толщину 2 пикселя.Вам нужно подчеркнуть выбранный элемент навигации, чтобы покрыть эту границу.Ваш текущий метод подчеркивания выбранного элемента навигации использует border-bottom, который не может перекрываться так, как вам нужно.Вместо этого используйте псевдоэлемент ::after.

header.main-header .main-navigation ul.nav li.active-nav::after {
    content: "";
    position: absolute;
    width: 100%;
    height: 3px; /* same thickness as your original border */
    background: #F89106;
    bottom: -2px; /* places it exactly over the below element's top border */
    left: 0;
}

Отображение как flex

Чтобы отобразить как flex, достаточно просто установить для родительского элемента значение display: flex; и удалить float: left; от своих детей.Вы установили ширину каждого дочернего элемента отдельно, что не обязательно должно меняться, но, как вы сказали выше, лучше позволить flexbox работать с шириной.Я убрал все ширины, что делает ваши панели Search и Dhobi такими же широкими, как и все остальные.

Кроме того, я думаю, вы можете найти min-height лучше, чем height;при использовании height содержимое на панели «Фильтр» переполняется, и поэтому границы панели не расширяются до нижней части страницы.

#content_wrapper_search_etl{
    width: 100%;
    display: flex; /* key element */
}
.leftside-search-area{ /* no float and no width, same with the other panels */
    min-height: 98vh;
    border-right: 1px solid #E4E4E4; 
}
.center-search-area{
    min-height: 98vh;
    border-right: 1px solid #E4E4E4;
}
.right-search-area{
    min-height: 98vh;
}

Правильное выравнивание границ ввода

Ваш ввод был немного слишком широким с некоторыми интересными параметрами границ, из-за которых он казался не выровненным с остальными вертикальными границами.Сделайте ширину ввода 100% и установите все границы на none, кроме border-bottom.Это также устраняет проблему с переполнением flex.

.right-search-area input,.center-search-area input,.leftside-search-area input{
    width: 100%; /* not 101% */
    border: none;
    border-bottom: 1px solid #E4E4E4; /* set border-bottom only */
    height: 25px;
    outline: none;
    font-family: FontAwesome !important;
}

(в некоторой степени) Отзывчивое переполнение

Чтобы остановить переполнение элементов панели фильтров, вы можете установить свойство min-width.или вы можете сделать это по-флексографски с помощью align-self: flex-start; Однако это может привести к тому, что часть текста вашего ярлыка будет обернута внутри ярлыка.Чтобы исправить это, установите ваши метки 'white-space: nowrap;.Наконец, вам нужно добавить горизонтальный отступ, чтобы немного отвести его от края.

Предложение: вы можете попробовать flex-direction: column; в вашем .box CSS.

Это неРеальная отзывчивость, но она решает проблему переполнения.

.leftside-search-area{
    align-self: flex-start; /* keep width to that of its content */
    min-height: 98vh;
    border-right: 1px solid #E4E4E4;
}
.vertical-box .box{
    white-space: nowrap; /* prevent labels wrapping */
    display: flex;
    padding: 0 10px 0 10px; /* space from horizontal edges */
    ...
}

Ручка, раздвоенная от вашей, которая реализует все вышеперечисленное, найдена в https://codepen.io/anon/pen/ZMqVVq

Результат:

Result

Надеемся, что это решит все проблемы с отображением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...