Задать вопрос
Ответы пользователя по тегу CSS
  • Как сделать такую обертку?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    Например можно сделать так:



    В примере выше - "позиция" каждого псевдоэлемента зависит от его размера.

    Конечно можно изменить значение переменной для смещения элемента:

    - --pseudo-offset: calc((0px - (var(--pseudo-size) / 2)) - 1px);
    + --pseudo-offset: calc(0px - (var(--pseudo-size) / 2));


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

    Ну или вообще можно задавать смещение для псевдоэлементов вручную:

    - --pseudo-offset: calc((0px - (var(--pseudo-size) / 2)) - 1px);
    + --pseudo-offset: -8px;


    В целом конечно есть и другие варианты решения без создания лишних элементов и так далее, но я думаю что и такого варианта будет достаточно для примера.
    Ответ написан
    1 комментарий
  • Как мне убрать отступ сверху у ссылки?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    Можно переопределить значение свойства line-height для элемента .question или для ссылки которая лежит внутри данного элемента, ну и для нормализации внешнего вида, можно ещё добавить немного флексбокса.

    .textfaq .question {
    + display: inline-flex;
    + justify-content: center;
    + align-items: center;
    + line-height: 40px;
    }
    Ответ написан
    Комментировать
  • Как сместить элемент?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    Если нужно сделать по центру(вертикально и горизонтально):

    .leftS{
        display: flex;
        justify-content: center;
        align-items: center;
    }


    Или если только по горизонтали:

    .leftS{
        display: flex;
        justify-content: center;
    }


    И в любом случае можно убрать это:

    .leftS * {
        position: relative;
        left: 30px;
    }


    Таким образом аватарка встанет по центру.

    Дополнительная информация

    Замените двоеточие, на точку с запятой в своём CSS коде.

    .msgContainer {
    - position: relative:
    + position: relative;
    }


    Ну, а ещё почитайте про форматирование кода и получше изучите CSS.

    Ответ написан
    2 комментария
  • Как поправить верстку?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    .description {
      width: 100%;
      max-width: 0;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }


    Дополнительные варианты

    <td class='description'>
      <div class="textbox">
        <span> TEXT </span>
      </div>
    </td>


    .textbox {
      width: 100%;
      display: inline-grid;
    }
    
    .textbox span {
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }


    Или:

    <td class='description'>
      <div class="textbox"> TEXT </div>
    </td>


    .textbox {
      width: 100%;
      overflow: hidden;
      text-overflow: ellipsis;
      display: -webkit-box;
      -webkit-line-clamp: 1;
      -webkit-box-orient: vertical;
    }

    Ответ написан
    Комментировать
  • Как выстроить блоки с помощью grid?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    .main__work-blocks {
      display: grid;
      grid-gap: 30px;
      grid-template-columns: repeat(12, 1fr);
    }
    
    .main__work-block:nth-child(n + 2) {
      grid-column: span 4;
    }
    
    .main__work-block:nth-child(3n + 1) {
      align-items: center;
      grid-column: span 8;
    }
    Ответ написан
    Комментировать
  • Есть ли плагин, для изменения DOM при адаптиве?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    В принципе можно обойтись и медиа запросами, но если структура макета слишком сложная, есть и другие варианты решения задачи.

    Например, задачу из вопроса, можно легко решить по старинке, используя два HTML - блока, плюс переключение display через медиа запросы. Например одна кнопка находится в одном месте страницы и отображается по дефолту на десктопах, а вторая кнопка находится совсем в другом месте страницы и "активируется" соответственно на планшетах и мобильниках.

    Дублирование контента имеет небольшие плюсы и большие минусы. Вариант конечно с первого взгляда кажется классным, но это не всегда будет столь выгодно, если нужно будет дублировать большие куски контента.

    Волшебной таблетки, скажем так, не существует, поэтому нужно решать задачу тем способом, который будет более выгодным и если всё же хочется JS плагин, то есть такой вот вариант: dynamic_adapt. Правда, можно конечно сделать и получше, но если нет опыта написать что-то годное самостоятельно, можно попробовать этот плагин. Альтернатив, увы, не встречал.
    Ответ написан
    Комментировать
  • Не затемняется фото?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    но background-color: rgba(0, 0, 0, 0.85); не затемняет картинку


    Ну как бы всё правильно. Эффект затемнения делается совсем по другому.

    1. CSS Filter.

    Пример

    .order {
         filter: brightness(0.7);
    }



    2. Псевдоэлемент.

    Пример

    .order {
         position: relative;
    }
    
    .order::after {
         position: absolute;
         width: 100%;
         height: 100%;
         content: "";
         top: 0;
         left: 0;
         right: 0;
         bottom: 0;
         background: rgb(16 16 16 / 76%);
    }



    3. Множественный фон.

    Пример

    .order {
         background: linear-gradient(
              to top, 
              rgb(20 22 23 / 77%), 
              rgb(20 22 23 / 77%) 100%
              ), 
              url("../images/order.jpg");
    }



    И ещё множество альтернативных решений.
    Ответ написан
    Комментировать
  • Как сделать анимацию "водных разводов"?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.


    Ещё 7 вариантов анимации








    Ответ написан
    Комментировать
  • Как nth-child сделать в шахматном порядке?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    Ответ написан
    Комментировать
  • Как сделать такую анимацию?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    На самом деле не совсем понятно, когда запускается анимация? Если после нажатия на кнопку или после события сhange, тогда можно сделать например так:

    .is-active {
         animation-name: shake;
         animation-direction: alternate;
         animation-duration: 1s;
         animation-iteration-count: 4;
    }
    
    @keyframes shake {
         from {
              transform: translateX(0px);
         }
         to {
              transform: translateX(150px);
         }
    }


    const button = document.querySelector(".button");
    
    button.classList.add("is-active");
    
    button.addEventListener("animationend", (event) => {
         event.stopPropagation();
         button.classList.remove("is-active");
    }, { once: true });


    То есть добавить активный класс кнопке, а после окончания анимации удалить добавленный класс.

    Или кнопка "убегает" от курсора в каком-то определенном направлении?

    Ответ написан
    Комментировать
  • Как извлечь url для заднего фона?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    Есть ли возможность как то подгрузить или считать url-адрес картинок (не объявленных в дом-дереве) из определенной папки лежащей в корне сайта?


    Средствами одного только CSS такое не сделать.
    Ответ написан
    Комментировать
  • Как уместить анимацию на мобильных устройствах?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    Для начала у элементов curley, web, dev, уберите свойства: left, right, bottom. Далее можно немного подправить остальные стили у элементов + немного изменить разметку и ситуация улучшится.

    <div class="container text-uppercase">
        <p class="text curley">Hello</p>
        <div class="group">
          <p class="text web">Hello</p>
          <p class="text dev">Hello</p>
        </div>
        <div class="hide-text"></div>
      </div>


    .container {
         width: 100%;
         max-width: 600px;
         margin: 0 auto;
    }
    
    .text {
         --sw-1: drop-shadow(0 0 1px black);
         --sw-2: drop-shadow(0 0 2px red);
         font-family: "Orbitron", sans-serif;
         background: linear-gradient(darkred 30%, cyan, white, cyan, darkred 70%);
         -webkit-text-stroke: 3px cyan;
         -webkit-background-clip: text;
         -webkit-text-fill-color: transparent;
         font-weight: 900;
         font-size: 4.1em;
         text-align: center;
         text-transform: uppercase;
         filter: var(--sw-1) var(--sw-1) var(--sw-2) var(--sw-2);
         opacity: 0;
         margin: 0;
    }
    
    .group {
         display: flex;
         gap: 10px;
         justify-content: center;
    }
    
    .curley {
         animation: bg-shift 1s infinite linear alternate, 
                    scale 750ms ease-in forwards 3.5s, 
                    jump 500ms ease-out forwards 5.7s, 
                    blur-in 300ms linear 3.5s,
                    zoom 4s ease-in-out 6.25s, 
                    flip 500ms linear forwards 8s;
    }
    
    .web {
         animation: bg-shift 1s infinite linear alternate, 
                    scale-angle1 3s ease-in-out forwards 2s, 
                    blur-in 500ms linear 2s, 
                    rotate-up1 250ms ease-out forwards 5.7s,
                    zoom 1.5s ease-in-out 6.25s, 
                    flip 500ms linear forwards 8.5s;
    }
    
    .dev {
         animation: bg-shift 1s infinite linear alternate, 
                    scale-angle2 3s ease-in-out forwards 2s, 
                    blur-in 500ms linear 2s, 
                    rotate-up2 250ms ease-out forwards 5.7s,
                    zoom 1.5s ease-in-out 6.25s, 
                    flip 500ms linear forwards 8.5s;
    }
    
    /*  Код анимаций без изменений */


    Размер шрифта скорее всего придётся уменьшать через @media запросы, чтобы на мобильниках всё нормально отображалось. Но в целом ваши анимации и стили можно и нужно улучшить.
    Ответ написан
    Комментировать
  • Почему при наведении на один элемент не делает видимым другой?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    С помощью CSS, при такой структуре разметки, желаемого результата добиться не выйдет.

    Однако можно сделать вот так:

    .ava:hover ~ #profiles_show .block {
       display:block;
    }


    Ну, а ещё в html у вас class="ava", а в css - .avatar. С этим нужно бы определиться... либо одно, либо другое.

    Кстати использовать ID атрибуты для стилизации элементов - моветон.
    Ответ написан
    2 комментария
  • Почему при наполнении текста ломается верстка?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    .programs__name {
       min-width: 0;
    }
    
    .programs__name p {
       white-space: nowrap;
       text-overflow: ellipsis;
       overflow: hidden;
    }


    Обрезать текст можно с помощью набора свойств: text-overflow, overflow и white-space(хотя возможно оно здесь лишнее). А вот min-width: 0 используется для того чтобы дочерние элементы во flex контейнере, могли сжиматься при уменьшении ширины родительского элемента.
    Ответ написан
    1 комментарий
  • Как флексами разделить блоки 2 на 2?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    .flex {
       --gap: 20px;
       display: flex;
       flex-wrap: wrap;
       gap: var(--gap);
    }
    
    .item {
       width: calc(50% - var(--gap) / 2);
       height: 100px;
       background-color: red;
    }
    Ответ написан
    Комментировать
  • Возможно ли дать картинкам такую форму в css?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    Например с помощью CSS масок или Clip Path.
    Ответ написан
    Комментировать
  • Можно ли ставить after прямо на input а не на form?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    Не у всех HTML тегов есть собственное содержимое, поэтому не во всех случаях стоит ждать корректного результата при использовании псевдоэлементов на следующих тегах <img>, <input type="text">, <input type="email">, <input type="password">, <input type="datetime">, etc.

    Однако вы можете обернуть input в дополнительный тег, после чего использовать псевдоэлемент родительского элемента.

    <div class="inputbox">
       <input type="text">
    </div>


    .inputbox::after { 
      /* ...стили для псевдоэлемента */ 
    }
    Ответ написан
    3 комментария
  • Как расположить карточки в ряд?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    Можно конечно сделать и так как вам подсказали в соседнем ответе:

    .container{ 
      display: flex;
      justify-content: space-around;
    }
    
    .card { 
       width: fit-content; 
    }


    Но в таком случае, если какая-нибудь карточка будет больше по ширине, тогда равномерного расположения по центру уже не будет.

    63397efd5efe3045799569.png

    Можно сделать по другому, например используя CSS Grid:



    Суть в том что в этой строке:

    grid-template-columns: repeat(auto-fill, minmax(310px, 310px));


    Указываем минимальную и максимальную ширину карточек, тем самым запрещаем растягиваться элементам, что обеспечит корректную работу свойства: justify-content: space-between;
    Ответ написан
    Комментировать
  • Не работает псевдоэлменет при наведение на текст?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    Вот здесь:

    .title:hover ~ .title::after {
        transform: rotate(180deg);
    }


    При наведении на элемент .title, вы пытаетесь применить трансформацию псевдоэлементу :after, используя при этом селектор следующего элемента, который работает совсем по другому.

    Чтобы менять стили псевдоэлементов, при наведении на родительский элемент, используется такая комбинация:

    <element>:hover::after { /* ... style */ }

    То есть для решения проблемы, нужно сделать так:

    .title:hover::after {
        transform: rotate(180deg);
    }
    Ответ написан
    Комментировать
  • Как работает наследственность стилей в этом случае?

    mizutsune
    @mizutsune
    I will live forever in the flame of your eyes.
    Если это касается именно Swiper, то решается это дело без !important и других лишних действий. Достаточно указать для кнопок управления слайдером кастомные селекторы и назначить нужные стили:

    new Swiper('.swiper', {
      navigation: {
        nextEl: '.my-awesome-slider-button-next',
        prevEl: '.my-awesome-slider-button-prev',
      },
    });


    .my-awesome-slider-button-prev { /* ...styles */ };
    .my-awesome-slider-button-next { /* ...styles */ };
    Ответ написан
    1 комментарий