Ответы пользователя по тегу HTML
  • Как реализовать горизонтальный скролл?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    В примере JSFiddle:
    • реализован переход между страницами через меню без JavaScript;
    • можно переключить галерею в режим справа на лево.


    Основное в примере это:
    .container { 
        position: absolute;
        top: 0; left: 0;
        bottom: 0; right: 0;
        overflow-x: scroll;
        
        -ms-writing-mode: tb-lr;
        -webkit-writing-mode: vertical-lr;
        -moz-writing-mode: vertical-lr;
        -ms-writing-mode: vertical-lr;
        writing-mode: vertical-lr;    
    }
    .items {
        display: inline-block;
        position: relative;
        width: 100%;
        height: 100%;
    
        -ms-writing-mode: lr-tb;
        -webkit-writing-mode: horizontal-tb;
        -moz-writing-mode: horizontal-tb;
        -ms-writing-mode: horizontal-tb;				
        writing-mode: horizontal-tb; 
    }
    Ответ написан
  • Как сделать блок с фиксированным соотношением сторон на всю страницу на CSS?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Применяй единицы измерения vmin, vmax, vw, vh.

    Например: JSFiddle
    .proportionale {
        position:absolute;
        width: 100vmin;
        height: 66vmin;   /* соотношение всегда будет 3/2 */
    }
    @media orientation: portrait { 
    .proportionale {
        position:absolute;
        width: 66vmin;
        height: 100vmin;   /* при портрете соотношение всегда будет 2/3 */
    }  
    }


    Только соблюдать правила:
    • 100vmin указывать к той сороне которая должна быть ограничительной;
    • если указываете больше 100vmin быть готовым что контент будет вылазить за границы при пропорциях близких 1/1.


    Еще есть вариант с флексбоксом.
    main {
        display: flex;
        flex-direction: column;
        flex-wrap: nowrap;
        justify-content: center;
        align-content: stretch;
        align-items: center;
    
        width:90%;
        margin: auto;
    }
    section {
        order: 0;
        flex: 0 1 60vw;
        align-self: stretch;    
        
        outline:blue 1px solid;
    }
    Ответ написан
    Комментировать
  • Нужны ли миниатюры фотографий в галерее?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Задам несколько наводящих вопросов.

    • Галерея показывается только в админке?
    • Изображения на сайте используются только в полном разрешении?


    Если ответы "нет" - используйте скрипт автоматичекского ресайза и сохранения, с последующей выборкой. Например: phpthumb.
    Ответ написан
    Комментировать
  • Как не позволить роботам делать POST-запрос?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Роботы точно входят через сайт?
    Без КАПТЧИ они могут на пряму посылать запросы!

    У вас уникальный "тикет" в форме есть?
    Проверяете клиента при загрузке файла на присутствие на сайте?
    Ну и проверяйте сразу есть ли к чему привязывать (в смысле существует ли ТИКЕТ на создание объявления привязаный к ТИКЕТУ на загрузку).
    Ответ написан
    Комментировать
  • Как реализовать выдвижной бар как на этом сайте?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    На чистом CSS это смотрится так JSFiddle

    .small {
     ...   /* здесь спозицинируйте малый банер */
    }
    .big {
       display: none;
    }
    header:hover .big {
        display: block;
        position: absolute;
       ...  /* здесь спозицинируйте и анимируйте большой банер */
    }
    Ответ написан
    Комментировать
  • Как сделать скролл только той колонки которая под курсором?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Всегда прокручивается именно тот блок, что под курсором. Мож у тебя драйвер мыши со своей "китайской" логикой.

    Смотри пример: JSFiddle
    В третьем блоке хитрая аномалия. Где скрол спрятан за размеры блока. Скрол уже кончился а блок всё ещё прокручивается.
    Ответ написан
  • Как делать разметку страницы, position или float?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Попытаюсь объяснить своими словами.

    Поток набор элементов соотносящихся между собой как соседи имеющие общее начало координат, при этом элементы дети наследуют поток. Где каждый блок имеет свое последовательно зарезервированное пространство.
    Резервирование пространства под блок тоже имеет свою логику и задается в display.

    Смотим пример: JSFiddle

    • float не отделяет блок от потока, смещает в край и минимизирует резервированное пространство для блока и применяет размеры. "Дети" остаются в старом потоке (Float child имеет ширину и начало координат от прародителя). Float удобен для набора блоков в стаки - так как край берется с учетом резервированных пространств, и флоат блоки не перекрываются. aside - можно(но не всегда) делать через ;
    • relative блок не отделяется от родительского потока, а только корректирует свою координату и применяет размеры, пространство выделенное для блока остается. "Дети" получают новый внутренний поток. Используй для корректировки позиции блока. Создавай новые потоки для детей, без изменений для самого блока;
    • absolute используется чтобы явно создать в родительском потоке, новый поток равный родительскому - с началом координат родительского. Пространство в родительском потоке не выделяется. "Дети" получают новый внутренний поток. В основном используется для всяких "дополняшек" привязаных к блоку. aside в большинстве случаев делаются им.;
    • fixed используется чтобы создать независимый поток который позиционируется относительно окна. Fixed удобно делать header видимый всегда при прокрутке страницы.;

    Все остальное это - Static.

    Подобьем итог
    header, footer - static или fixed (в редких случаях absolute);
    content - принято оставлять statiс. Пусть контент лежит в основном потоке;
    aside - absolute или на крайняк float;
    Всякие изыски modal, action (типа хрестика на закрытие модального) - absolute;

    P.S. Но как всегда есть исключения и нужно думать своей головой. Или если мозг не настроен думать пользоваться шаблонами.
    P.P.S. Ксати есть flex - штука очень хорошая для тех кто думает своей головой. Ибо енто мутант со тремя головами и двенадцатью глазищами... ;)
    Ответ написан
    Комментировать
  • Как организовать правильное вертикальное выравнивание div'ов?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Вот статья про Bootstrap и 3 колонки одинаковой высоты.
    Но лично мене не нравится такое решение.

    Вот решение в 3 правила адаптивное по ширине и высоте .

    <main>
        <div>
            <p>Span</p><p>Span</p><p>Span</p><p>Span</p><p>Span</p>
        </div>
        <div>
            <p>Span</p><p>Span</p><p>Span</p>
        </div>
        <div>
            <p>Span</p><p>SpanSpanSpanSpan</p><p>Span</p><p>Span</p><p>Span</p><p>Span</p><p>Span</p><p>Span</p><p>Span</p>
        </div>
    </main>

    main {
        position:relative;     /* должно быть отлично от static */
        overflow:hidden;
    }
    div {
        vertical-align:top;
        position:relative;
        display:inline-block;
        z-index:1;             /* заменить на background:gray; если плохо использовать z-index */
    }
    div:after {
        content:'';
        position:absolute;
        left:0;right:0;
        bottom:-1000%;      /* здесь максимально возможная разница между блоками в процентах (здесь х10)*/
        top:0;z-index:-1;      /* заменить top на top:100%; если нужно забрать z-index */
        background:gray;
    }
    Ответ написан
    Комментировать
  • Как заставить работать flex-wrap на Default Android Browser?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Вроде есть частичное решение для Android и старых Лис:

    white-space: {nowrap | normal - вместо wrap};

    Не будет работать опция wrap-reverse (но она и не нужна в наших реалиях).
    Ответ написан
  • Можно ли сделать полупрозрачную границу у слоя?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    В общем случае ставят цвет фона из body в цвет тени.

    Если так непулучается (по различным причинам), то есть несколько вариантов:
    - нужно заранее делать картинку с полупрозрачными краями;
    - воспользоваться canvas для генерации такой картинки;
    - воспользоваться серверным скриптом;
    - наложить маску ( !не кросбраузерно ).

    ДОПОЛНЕНО:
    Коментарий натолкнул меня на мысль написать JS делающий это красиво:

    function feather(mask) {
         $('img.feather').each( function(){
              var src = this.attr('src');
                    mask = mask || this.data('mask') || 'http://dragon.deparadox.com/img/wual.png';
              src = 'url(data:image/svg+xml;base64,'+btoa(
    '<svg width="400" height="300" baseProfile="full" version="1.2">'+
    '        <defs>'+
    '            <mask id="svgmask2" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse"'+ 'transform="scale(1)">'+
    '                <image width="100%" height="300" xlink:href="'+mask+'" />'+
    '            </mask>'+
    '        </defs>'+
    '        <image id="the-mask" mask="url(#svgmask2)" width="100%" height="300" y="0" x="0" xlink:href="'+src+'" />'+
    '    </svg>')+')';
              this.attr('src',src);
         });
    }
    Ответ написан
    Комментировать
  • Как правильно реализовать masonry на чистом CSS?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Попробуй так изменить разметку:
    ...
          /* Добавим data-header="M" к .masonry-item*/
         <div class="col-lg-3 col-md-3 col-sm-3 col-xl-12 masonry-item" data-header="M">
              /* <li class="header">M</li>  Убрать из разметки*/ 
              ...
         </div>
         ...

    В своем стиле сделать псевдо елемент :before :
    .masonry-item[data-header]:before {
                   content: attr(data-header);
                   display: block;
                   font-weight:bold;
              }

    Как вариант можно скинуть data-header в первый li (не в li c класом header - его быть не должно), и поменять селектор на .masonry-item li[data-header]:before

    P.S. В вопросе ставь код, а не скриншоты. Набирать наново лениво.
    Ответ написан
    2 комментария
  • Какое написание class/id селекторов более правильное?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    По-моему "как правильно" некоректно задан вопрос.
    В первую очередь правльно нужно построить архитектуру CSS.

    Пример:
    - визульное представление, функциональное, динамическое пишутся в разных стилях;
    - добавляются в виде class = "visual1 animation2 do3";
    - а в общем стиле нужно написать .visual1.animation2.do3 {};
    - это заложено в основу CSS, и работает быстрее чем туча стилей с разными названиями для каждого блока.
    Ответ написан
    Комментировать
  • Добавление в шапку выбраной категории?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Для решения твоей задачи воспользуемся селектором :target и событием onhashchange...

    <div class="btn-group">
      <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
        Action <span class="caret"></span>
      </button>
      <ul class="dropdown-menu" role="menu">
        <li title="Action" id="action" ><a href="#action">Action</a></li>
        <li title="Another action" id="aaction"><a href="#aaction">Another action</a></li>
        <li title="Something else here" id="some"><a href="#some">Something else here</a></li>
        <li class="divider"></li>
        <li title="Separated link" id="separ"><a href="#separ">Separated link</a></li>
      </ul>
    </div>
    
    <script>
    window.onhashchange = function(e){ 
    	        var secure = '; secure';
    /* имя поля куки */
    	        var name = 'menu';
    /* ложим пункт меню в шапку сайта */
    	        document.title  = document.getElementById(window.location.hash.substring(1)).title; 
    /* ложим пункт меню в куки сайта */
    	        document.cookie = [   name, '=', encodeURIComponent(document.title), secure].join('');
    });
    </script>
    
    <style>
    /* CSS */
     li[id]:target {
        /* здесь позиционируеш блок li в шапке меню */
    }
    </style>
    Ответ написан
    Комментировать
  • Как растянуть div по высоте div'а внутри?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    <div class="lin1">
    <div class="lin2">
    Текст, который не выходит за пределы lin2. 
    Растягивает его по ширине и высоте, переносит строки.
    </div></div>
    
    <style>
    .lin1 {
    position: relative;
    height: auto;             
    /* формируется из высот содержимого родного потока - у которого дальше содержимого нет */
    width: 180px;
    background: url(...) no-repeat;
    }
    .lin2 {
    width: 150px;
    /* position: absolute;        /*   выделяется в новый поток непривязаный к родителю.     */  
    position: relative;             
    /* РЕШЕНИЕ: Меняем на relative чтобы остаться в потоке родителя */
    height: 100%;                 
     /* Растягивает блок по высоте первого родителя у которого position отличное от fixed - себя, потому что родитель потока */
    display: table;
    white-space: normal;
    }
    </style>


    JSFiddle
    Ответ написан
    Комментировать