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

    @alexalexes
    Вы пытаетесь работать с CSS как с шаблоном - для этого нужно использовать препроцессор CSS такие как Sass, Stylus, Less.
    Если у вас учебный проект, то это отдельная глава или даже раздел для набивания навыков и шишек.
    Если проект боевой и довольно простой, то можно не ввязываться в дебри динамической генерации стилей, условится, что статичные свойства стилей вы записываете в файлах CSS, а динамические - в html вставками:
    <style>
      .user-114__avatar
    {
       background-image: url({{thumbnail}});
    }
    </style>
    ...
    <!-- какие-то общие стили для аватара прописаны в классе user__avatar в файле css, а изменяемые прямо в HTML-->
    <div class="user__avatar user-114__avatar">
    </div>

    или инлайн-стилями:
    <!-- какие-то общие стили для аватара прописаны в классе user__avatar в файле css, а изменяемые прямо в инлайн-атрибуте тега-->
    <div class="user__avatar" style="background-image: url({{thumbnail}});">
    </div>

    PS: Тег img некорректно использовать без src, фон в нем может выступать только дополняющим свойством, например, закрывать прозрачные участки картинки src. И с фоновым изображением придется работать по-другому, чтобы привести в порядок адаптивность элемента.
    Ответ написан
    3 комментария
  • Если я поменяю наполнение сайта, как изменится ранжирование его в поисковых системах?

    @alexalexes
    Если не нарушите метатеги, заголовки страниц и разделов текста, используемые для поисковых ботов. То ничего не поменяется с их точки зрения.
    Ответ написан
    Комментировать
  • Как добавить блок в input?

    @alexalexes
    Либо вместо input использовать textarea высотой в одну строку, чтобы можно было добавить псевдоэлемент.
    Либо повесить обработчик события который перехватывает любой ввод символов в поле, извлекает число из строки, и дописывает символ. Но тут придется еще бороться с тем, чтобы курсор не съезжал в конец строки.
    Ответ написан
    Комментировать
  • Правильно ли использовать position absolute & relative в верстках?

    @alexalexes
    Менять свойство position оправдано, если стоит задача в одном контейнере визуально наложить друг на друга дочерние блоки, которые в html не вложены друг в друга - по тексту иду один за другим.
    Например, у вас есть контейнер div.photo__container с img и блоком описания div.photo__descr:
    <div class="photo__container">
      <img src="photo.jpg"/>
      <div class="photo__descr">
        <p>Описание для фото</p>
      </div>
    </div>

    Если стили оставить как есть, то описание отобразится под изображением.
    Чтобы наложить описание на фото, нужно изменить позиционирование блока описания.
    Если мы тупо пропишем position: absolute для блока описания photo__descr, то этот блок убежит черт знает куда (точнее, спозиционируется относительно body, или ближайшего родителя, у которого будет position: relative).
    div.photo__descr
    {
      position: absolute;
    }

    Для этого нужно ограничить абсолютное позиционирование данного блока родительским блоком:
    div.photo__container
    {
      position: relative;
    }

    Далее, хотелось бы, чтобы блок приклеился к низу контейнера. Поскольку у нас блок в абсолютном позиционировании, то могут работать свойства top, right, bottom, left. Нужен bottom:
    div.photo__descr
    {
      position: absolute;
      bottom: 0;
    }

    Еще есть желание ограничить макс. высоту блока описания, можно воспользоваться процентами, причем они будут высчитываться от родительского блока position: relative:
    div.photo__descr
    {
      position: absolute;
      bottom: 0;
      max-height: 30%;
      overflow-y: auto; /* можно еще добавить возможность прокручивать содержимое при вертикальном переполнении */
    }

    Увы, чтобы работали процентные величины относительно родителя, нужно чтобы у родителя были заданы конкретные значения ширины и(или) высоты:
    div.photo__container
    {
      position: relative;
      height: 600px;
    }
    Ответ написан
    Комментировать
  • Работа с таблицами?

    @alexalexes
    К сожалению, геометрические свойства table по отношению к строкам и ячейкам слишком древние и не подчиняются подстройки через first-child, last-child. Можно только добавить внутренние отступы для ячеек последней строки. Но эти ячейки должны содержать какой-то контейнер, чтобы имитировать цвет фона ячейки.
    В этом случае, цвет фона не должен быть на самой строке или ячейке.
    .table tr:last-child td
    {
      padding: 5px 0;
    }
    Ответ написан
    Комментировать
  • Как сменить hover для маленьких экранов с касаниями?

    @alexalexes
    Вариант 1. Применять псевдоклассы hover с определенной ширины экрана.
    Преимущества. Классическое применение media с width работает с более древними браузерами, начиная с IE9.
    Недостатки. Делается предположение, что сенсорное устройство имеет маленький размер экрана. Но это ничего не говорит о наличии только сенсорного управления.
    @media (min-width: 768px)
    {
      /* селектор стилей для кнопки при наведении */
      slider__button:hover
      {
      }
    }

    Вариант 2. Применять псевдоклассы hover для устройств, поддерживающих hover.
    Преимущества. Анализируется именно наличие функции, а не предполагаемый размер экрана.
    Недостатки. Не все условно древние браузеры понимают media с условием hover. От поддержки IE придется отказаться.
    /* устройство поддерживает hover*/
    @media (hover: hover)
    {
        /* селектор стилей для кнопки при наведении */
      slider__button:hover
      {
      }
    }

    /*устройство не поддерживает hover */
    @media (hover: none)
    {
      /* селектор стилей для кнопки при наведении - не нужен, либо должен переопределять свойства hover на нейтральное состояние */
     /* slider__button:hover
      {
      }*/
    }

    PS:
    Есть хак для поддержки media с hover для старых браузеров, но будут проблемы, если нужно иметь валидный CSS.
    @media (hover), (min-width:0\0), (min--moz-device-pixel-ratio:0)
    {
         /* селектор стилей для кнопки при наведении */
      slider__button:hover
      {
      }
    }
    Ответ написан
    Комментировать
  • Как лучше делать слоистую структуру в HTML+CSS?

    @alexalexes
    Примерно так:
    <div class="подложка">
      <div class="элемент-подложки" style="background-color: transparent; transform: translate(0, -30px)">
      </div>
    </div>

    Сам .элемент-подложки не будет двигаться. Будет смещаться только его графический образ.
    Ответ написан
  • Как установить правильное смещение dom элемента(jquery, css)?

    @alexalexes
    но откуда то берется плавная прокрутка до нужного места(возможно бутстрап накладывает анимацию)

    Если сторонняя js библиотека не перебирает scrollTop для имитации прокручивания, то возможно в css указано:
    html
    {
      scroll-behavior: smooth;
    }

    Это свойство позволяет обычным способом через css указать, чтобы страница прокручивалась плавно, если меняются прокручивающиеся свойства, без указания их промежуточных значений.

    да и в общем на слабых устройствах этот вариант, мне кажется, моргать будет, даже если ее убрать.

    Со smooth-ом моргать не должно, так как js будет (должен) оперировать начальными и конечными значениями прокрутки, а анимацией будет управлять браузер.
    Ответ написан
    Комментировать
  • Каким шрифтом корректно отобразить Unicode Character “ⓘ” (U+24D8)?

    @alexalexes
    Попробуйте то, что использует qna.habr.com:
    font-family: "PT Sans",Helvetica,Arial,sans-serif;
    Если применяете fontawesome, то можно взять:
    <i class="fa-light fa-circle-info"></i>
    Ответ написан
  • Как в css удлинить видимое поле в select?

    @alexalexes
    Нельзя. Многие свойства активного элемента выпадающего списка относятся к дизайну браузера.
    От браузера к браузеру этот элемент будет выглядеть по другому, иногда совсем по другому.
    Например, на десктопном браузере вы видите select как выпадающий список. А вот в мобилках он будет уже выглядеть как модальное окно с радио кнопками - в этом случае ни о какой частичной высоте речи идти не будет.
    Ответ написан
    Комментировать
  • Как сделать полупрозрачное видео?

    @alexalexes
    Если используете тег video для вывода видео, то попробуйте дать ему свойство радиального градиента.
    background: radial-gradient(rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 1)); /* второй параметр цвета нужно подобрать близкий к фоновому */

    PS:
    1. Может не сработать на фрейме видео.
    2. Может не подойти вид градиента. Этих видов в css3 не так много.
    Ответ написан
    Комментировать
  • Как сделать фиксированный header во Vue?

    @alexalexes
    Вам нужно только свойство position: sticky для header, для этого js не нужен.
    https://developer.mozilla.org/ru/docs/Web/CSS/position
    Ответ написан
    Комментировать
  • Как в flex опустить вниз последний элемент?

    @alexalexes
    .item-5
    {
        margin-top: auto !important;
    }
    .border
    {
        background-color: #0f3feb;
        margin: 0 10px;
        width: 100px;
        height: 60px;
    }

    Обратите внимание на селектор .border - он имеет одинаковый уровень специфичности с .item-5, поэтому перебивается параметр margin (требуется костыль в виде !important).
    Если нужно обозначить более специфичные свойства отдельных элементов, то .item-5 селектор нужно писать после селектора .border либо добавлять вес специфичности, например div.item-5, чтобы избавиться от костыля !important.
    Ответ написан
  • Можно ли задать ширину блоку относительно родителя предыдущего?

    @alexalexes
    Можно, но вам придется поломать вложенность зеленого блока в синий блок с помощью свойства position.
    Красному блоку дать свойство:
    position: relative
    Зеленому блоку дать свойство:
    position: absolute
    Ответ написан
  • Как сделать такую штуку в HTML?

    @alexalexes
    Можно честно спиратить из vk.com плашку "Новые сообщения".
    <h4 class="im-page--history-new-bar _im_unread_bar_row">
    :before
    <span>Новые сообщения</span>
    :after
    </h4>
    Ответ написан
    Комментировать
  • Как сверстать блок, чтобы дочерние элементы переносились на новую строку с учетом фиксированной кнопки в углу?

    @alexalexes
    Как упомянуто в соседнем ответе, будет очень костыльно и чисто для спортивного интереса.
    К тому же, есть ограничение на фиксированный размер элемента, которое вам не нужно.
    <style>
        div.container
        {
          display: flex;
          flex-wrap: wrap;
          width: 770px;
          height: 90px;
          background-color: green;
          overflow: hidden;
        }
        div.container > div
        {
          width: 60px;
          height: 25px;
          background-color: #df1245;
          text-align: center;
          margin: 5px;
          padding: 5px 0;
        }
        div.container > div:nth-child(n + 22) /*этим селекторам задаем свойство сортировки элементам, которые идут после кнопки "показать еще" если контейнер будет адаптивным, придется прописывать кучу вариантов nth-child */
        {
          order: 2;
        }
        div.container > label.more
        {
          display: block;
          width: 130px;
          height: 25px;
          margin: 5px;
          padding: 5px 0;
          text-align: center;
          order: 1; /* У кнопки стоит такой индекс сортировки чтобы оказаться между видимыми и невидимыми элементами */
          background-color: #78d412;
        }
        div.container label.more span.less
        {
          display: none;
        }
        #show-more-state
        {
          display: none;
        }
        #show-more-state:checked ~ div.container
        {
          height: auto;
        }
        #show-more-state:checked ~ div.container label.more
        {
          order: 3;
          margin-left: auto;
        }
        #show-more-state:checked ~ div.container label.more span.more
        {
          display: none;
        }
        #show-more-state:checked ~ div.container label.more span.less
        {
          display: initial;
        }
      </style>
      <input id="show-more-state" type="checkbox"/> <!-- Этим чекбоксом запонимаем состояние кнопки, чтобы можно было оттолкнуться стилями от превдокласса :checked -->
      <div class="container">
        <label class="more" for="show-more-state"><span class="more">ПОКАЗАТЬ ЕЩЕ</span><span class="less">СВЕРНУТЬ</span></label>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
        <div>ITEM</div>
      </div>
    Ответ написан
  • Как убрать одну из прокруток?

    @alexalexes
    CSS свойство элемента overflow дробится на overflow-x и overflow-y.
    Подрегулируйте свойство overflow-x или overflow-y у контейнера .table__wrap

    Чтобы оставить возможность прокручивать контейнер, но не отображать сами полосы.
    Есть определенные CSS-хаки, но они специфичны для каждого браузера: https://qna.habr.com/q/18012
    Ответ написан
  • Как изменить стиль у всех элементов одного класса через JS?

    @alexalexes
    Можно воздействовать на конкретный селектор в уже отрендеренных стилях CSS.
    document.styleSheets[i].rules[j].selectorText
    Но проблема в том, что нужно пробежаться по всем стилям (i - счетчик), в каждом стиле просмотреть текст у селектора (j - счетчик).
    Если такой найден, то изменить свойство.
    document.styleSheets[i].rules[j].style['имя_свойства'] = значение_свойства;

    Подробнее:
    https://www.w3.org/wiki/Dynamic_style_-_manipulati...
    Ответ написан
    Комментировать
  • Как изменить положение у строчно-блочных элементов списка?

    @alexalexes
    </li><!-- тут символ переноса строки, вносит свою лепту как текстовая нода, имеющая небольшие, но геометрические размеры -->
          <li class="modules-card layout">

    Часто такой эффект выявляется, когда используется display: inline-block.
    Выход - не переносить li элементы (и не оставлять пробелы), или нивелировать размер текстовых нод с помощью css.
    Ответ написан
    Комментировать
  • Стилизация select?

    @alexalexes
    Вместо строчки 42:
    $('select').val(chooseItem).attr('selected', 'selected');

    Используйте:
    $('select option[selected]').removeAttr('selected'); // удаление ранее установленного selected атрибута у одного из option
      $('select option[value="' + chooseItem + '"]').attr('selected', 'selected'); // находим option с нужным value и устанавливаем атрибут selected
    Ответ написан
    Комментировать