Задать вопрос
Ответы пользователя по тегу CSS
  • Свойство display: block препятствует работе свойства order?

    @alexalexes
    Свойство order применяется только для flex и grid элементов, собственно, оно корректно только когда его родительский контейнер имеет свойство display: flex либо grid.
    Ответ написан
  • Как обрезать картинку только сверху?

    @alexalexes
    Добавьте к картинке свойство object-position: bottom.
    Ответ написан
    Комментировать
  • Как исправить обводку текста css?

    @alexalexes
    Попробуйте шрифт из этого источника:
    https://fonts-online.ru/fonts/montserrat
    На пробной странице стили обводки текста от этого источника отрабатывают корректно.
    Ответ написан
    Комментировать
  • Как расположить точки на окружности?

    @alexalexes
    В вашем примере используется карусель, у которой прописаны стартовое положение:
    state = {
        carouselDeg: 17,
        itemDeg: -17,

    carouselDeg - поворот элементов основной окружности в градусах. Опытным путем можно понять, что оно задается как:
    (360 / кол-во элементов) / 2
    Элементов у вас 10, значит, должно быть 18 градусов, а не 17 (можно заметить, что с 17 неровное начальное смещение).
    itemDeg - вращение контента внутри одного элемента. Если хотите, чтобы контент всегда был обращен горизонтально, то берете ту же формулу со знаком минус.
    Далее, есть такие методы:
    next = () => {
        this.getIdItems(true);
        this.setState(state => ({
          carouselDeg: state.carouselDeg - 36,
          itemDeg: state.itemDeg + 36
        }));
      };
    
      prev = () => {
        this.getIdItems(false);
        this.setState(state => ({
          carouselDeg: state.carouselDeg + 36,
          itemDeg: state.itemDeg - 36
        }));
      };

    Число 36 - это шаг вращения, он вычисляется как:
    360 / кол-во элементов
    В принципе все, что нужно знать для правильной ориентации карусели.
    Прорисовкой элементов карусели занимается сама библиотека, позиции элементов на плоскости вам вычислять не нужно.
    Ответ написан
    Комментировать
  • Как правильно сделать иконку возле текста?

    @alexalexes
    Чтобы применить свойство text-decoration на названии пункта меню, но не применять на псевдо элементе, нужно название обернуть в span:
    <a href="#" class="menu__item menu__item--sport"><span>Зимний спорт</span></a>

    Чтобы псевдо-элемент after был вплотную к названию, он, как вариант, должен быть строчным элементом. То есть, нужно отменить для него абсолютное позиционирование. Также, его нужно изобразить символом, а не геометрическим прямоугольником:
    .menu__item
    {
      text-decoration: none;
    }
    .menu__item > span
    {
      text-decoration: underline;
    }
    .menu__item:after
    {
      position: unset;
      content: '▪';
      margin-left: 5px;
    }
    Ответ написан
    Комментировать
  • Как вставлять картинки через код 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>
    Ответ написан
    Комментировать