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

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    В файле HTML должно быть:
    <html>
    <head>
    ...
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript" src="materialPreloader.js"></script>
    <link rel="stylesheet" type="text/css" href="css/materialPreloader.css"> 
    <script type="text/javascript">
    jQuery(document).ready(function($) {
        preloader = new $.materialPreloader({
            position: 'top',
            height: '5px',
            col_1: '#159756',
            col_2: '#da4733',
            col_3: '#3b78e7',
            col_4: '#fdba2c',
            fadeIn: 200,
            fadeOut: 200
        });
        $(window).on('load', function(){console.log('BlaBla'); preloader && preloader.off();});
        preloader.on();
        setTimeout(preloader.off,9000);
    });
    </script>
    Ответ написан
    33 комментария
  • Z-index. Как подвинуть элемент повыше, если у родителя тоже задан z-index?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Убирай все z-index - они лишние у неактивных элементов. И ставь на .wrapper:hover вот такой стиль:
    .wrapper:hover .wrap,.image:hover {
        z-index:1;
    }

    Решение на Jsfiddle

    Изначально не правильно построена концепция. У тебя для каждой картинки должен быть свой текст. Абсолютное позиционирование как картинок так и враперов не уместно. Враппер для каждой картинки нужно ставить в нутрь блока .image - Перед тегом img, или задать z-index если картинка в background. А синий блок "Посмотреть" создавать через :after.
    Ответ написан
  • Почему блок не выделяется при наведении на его родителя?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Блок - position:fixed или absolute;

    Или любым другим способом выдернут из потока Body;

    Что бы решить твою проблему забери у ссылок float и сделай их
    display:inline-block;

    Смотри пример jsfiddle
    Ответ написан
  • Как с помощью стилей поместить "readmore" после текста не меняя разметки?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    .material-news {
    display: inline;
    font: 12px/2.5 "Arial";
    text-align: justify;
    color: #464646;
    }
    .material-news:before {
    display: block;
    content: '.';
    color: white;
    }
    .readmore-btn {
    display: inline;
    padding-left:1ex;
    font: 12px "Arial";
    }
    .text-list-item-dn>br {
    display: none;            /* Благодарю @laska */
    }

    P.S. Если у img-intro-left заменить float на Position:absolute то можно и заголовок поставить inline и не ставить залипуху с :before.

    P.S.S. По коментарию, предлагаю:
    .articleBody .material-news {
    padding: 15px;
    display: block;
    }
    Ответ написан
  • Как реализовать горизонтальный скролл?

    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.
    Ответ написан
    Комментировать
  • Как реализовать выдвижной бар как на этом сайте?

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

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

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Блоки Fixed видимо идут в потоке - что и тянет за собой выше описанные проблемы.
    Попробуй так JSfiddle, должно помочь.

    html,body {
        position:absolute;
        top:0;bottom:0;
        left:0;right:0;
        overflow:hidden;
    }
    body {
        overflow:auto;
    }
    .modal {
        position:fixed;
        top:0;bottom:0;
        left:0;right:0;
    }


    ДОБАВЛЕНО:
    Если создаешь модальное окно динамично, в модальной форме на любой елемент input добавь autofocus:
    <input id="yourtextbox" ... autofocus />
    Если критично в .js запомни позицию скрола в нужных элементах, при автофокусировке скролы могут уехать куда вздумается. А если модальное есть в документе но спрятано, то в функции показа модального можно добавить:
    function setFocusToTextBox(){
        var textbox = document.getElementById("yourtextbox");
        textbox.focus();
        textbox.scrollIntoView();
    }

    А после закрития модального окна восстанови эти позиции.
    Ответ написан
    6 комментариев
  • Как сделать скролл только той колонки которая под курсором?

    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;
    }
    Ответ написан
    Комментировать
  • Как менять заливку и/или контур svg в CSS при условии, что *.svg в фоне?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    
    <svg viewBox="0 0 15 169" xmlns:xlink="http://www.w3.org/1999/xlink">
            <symbol id="shape">
    	     <polygon points="3,84 7,76 4,84 7,92 "/>
            </symbol>
            <polygon points="3,84 7,76 4,84 7,92 "/>
    
            <symbol id="shapeRed">
                      <use xlink:href="#shape" fill="red"/>
            </symbol>
    
            <symbol id="shapeGreen">
                      <use xlink:href="#shape" fill="green"/>
            </symbol>        
    </svg>


    в CSS файл подключать

    .arrow {background:url(icon.svg#shapeGreen);}
    .arrow:hover {background:url(icon.svg#shapeRed);}


    И через яваскрипт менять svg, на закодированный в base64 xlink на symbol:
    atb = document.styleSheets[__найти номер стайлшита__].cssRules[__найти номер привила__].style.backgroundImage;
    atb = atb.replace('url(,','').replace(/\)$/,'');
    atb = window.btoa('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg viewBox="0 0 15 169"      version="1.1"      xmlns="http://www.w3.org/2000/svg"     xmlns:xlink="http://www.w3.org/1999/xlink">	<use xlink:href='+abt+'/></svg>');
    document.styleSheets[__номер стайлшита__].cssRules[__номер привила__].style.backgroundImage = atb;
    Ответ написан
    Комментировать
  • Стайлгайд SASS, получается не красиво, что я делаю не так?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    "Красивые стили" получаются только руками в чистом CSS.
    От вложености в вашем случае только хуже.
    Посмотрите на CSS в браузере после обработки - там настоящий жестяный УЖОС... Там куча длинных селеторов которые бы вы руками писать не стали.

    section.bullets table tr td.date span.title {    /* должен быть селектор .bullets .date .title */
      font-size: 12px;
      text-transform: uppercase;
      color: #777;
      font-weight: normal;
      display: block;
    }
    section.bullets table tr td.date span {      /* как максимум .bullets .date span */
      font-family: gotham;
      font-size: 16px;
      color: #777;
      font-weight: 600;
      display: block;
    }
    section.bullets table tr td.fav {      /* максимум селектор .bullets .fav */
      padding-right: 40px;
    }
    section.bullets table tr td.fav a.btn {        /* .bullets .fav .btn */
      text-decoration: none;
      padding-top: 8px;
      -webkit-transition: all 250ms ease;
      -o-transition: all 250ms ease;
      transition: all 250ms ease;
    }
    section.bullets table tr td.fav a.btn:hover {    /* .bullets .fav .btn:hover */
      color: #5824dc;
      border-color: #5824dc;
      -webkit-transition: all 250ms ease;
      -o-transition: all 250ms ease;
      transition: all 250ms ease;
    }


    Хотите красиво - пишите на чистом CSS.
    Хотите быстро писать - пишите на SASS
    Но в общем случее ЭТО будет и не так!!! Нужно чётко понимать что будет после разворачивания.
    Ответ написан
  • Как заставить работать 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>
    Ответ написан
    Комментировать