Задать вопрос
  • Кому принадлежат домены и как они делятся?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Все довольно просто.

    Есть ICANN - Internet Corporation for Assigned Names and Numbers - Корпорация по управлению доменными именами и IP-адресами. Она управляет доменной зоной "." ("точка"), то есть всем пространством имен Интернет.
    В ICANN можно купить право создания и управления TLD (Top Level Domain - домен верхнего уровня). Почему я так подчеркнул слово "купить"? Потому что полученное будет иметь все свойства товара - с ним можно делать все, что угодно, в частности устанавливать любые, какие только вздумается правила регистрации имен в данной зоне.
    Несмотря на то, что купить можно не все TLD - часть зарезервирована под географические зоны, некоторые "хорошие" геозоны все равно можно использовать - кого, например, заинтересует мнение каких-то там Кокосовых Островов (.cc) или Тувалу (.tv)?
    Владелец зоны создает контору по технической регистрации имен. Технический регистратор - один. И именно он вносит изменения в базу. Заявки от конечных клиентов он обычно не принимает, продавая право на это другим конторам, их обычно тоже называют регистраторами, что создает преизрядную путаницу. На самом деле ничего они не регистрируют, они только подают заявки настоящему регистратору.
    Конечные регистраторы продают аренду доменного имени. Это важно. Вы не ПОКУПАЕТЕ имя (то есть оно не имеет свойств товара - Вы не можете его продать, обменять, подарить), Вы его АРЕНДУЕТЕ. Именно поэтому регистратор всегда может этот договор расторгнуть, если посчитает нужным.
    А условия договора аренды - целиком и полностью определяет регистратор, он тут ничем не ограничен. Он обязан платить некую сумму "настоящему" регистратору, а все что намутил - оставляет себе. Примерно, как таксист-частник, работающий под маркой таксопарка :)
    Обычно, когда говорят про домены, подразумевают, что все помнят, что домен купить нельзя, речь идет про аренду и специально этот факт не упоминают.
    Цена регистрации, цена продления и то, почему домен gabbagabbahey.cc будет стоить существенно меньше чем sex.com - определяется исключительно коньюнктурой рынка. На самом деле и то имя и другое не стоит ничего,, и если бы вдруг все люди перестали трахаться и стали фанатами игры Descent - соотношение бы изменилось :)
    Вы и сами можете стать регистратором и гнуть какие хотите цены. Заключаете договор с "настоящим" регистратором - и вперед.
    Иногда спрашивают - как завести свою зону. Обычному человеку как правило - никак. На хабре есть статья, как Яндекс заводил TLD .yandex - это им обошлось примерно в $200000 и год переписки с ICANN.
    Ответ написан
    Комментировать
  • Как сверстать такой блок?

    LenovoId
    @LenovoId
    svg, css,js
    Вот так на SVG

    Второй вариант на SVG pattern
    Ответ написан
    Комментировать
  • Как сверстать такой блок?

    RAX7
    @RAX7
    Ответ написан
    Комментировать
  • Как сделать цвет текста адаптивным к цвету фона?

    @McBernar
    Вот буквально вчера делал с помощью js.
    Алгоритм простой:
    1. Взять цвет фона
    2. Перевести hex в hsl
    3. Если l в hsl выше 0.8 (то есть, фон яркий), берем из hsl параметр hue (оттенок), берем насыщенность 100% и яркость 10%, и конвертируем новый темный оттенок обратно в hex
    4. Применяем этот hex к тексту

    Таким образом мы имеем либо белый текст на темном фоне (по-умолчанию), либо темный текст, слегка подкрашенный в оттенок фона, на светлом фоне. Почему подкрашенный? Потому что чистый черный на условно светло-розовом будет смотреться плохо. А вот слегка розоватый — отлично.
    Ответ написан
    Комментировать
  • Как разместить визуально элемента выше чем он в коде страницы?

    @archelon
    1. CSS
    Основной принцип такой: задать родительскому контейнеру
    .wrapper {
    display: flex;
    flex-direction: column;
    }

    Для дочерних элементов установить соответствующее свойство order
    .form-block {
    order: 1;
    }
    .heading-block {
    order: 2;
    }

    Разметку, конечно, нужно переделать соответственно.

    2. JS
    Переместить элемент. Например:
    $( '#form' ).appendTo( '#block' );
    Ответ написан
    Комментировать
  • Как правильно наложить изображения на div неправильной формы?

    Можно как-то так.
    Ответ написан
    Комментировать
  • Как задать grid поведение сетки как у masonry?

    ArsenyMatytsyn
    @ArsenyMatytsyn Куратор тега CSS
    Руководитель frontend направления, предприниматель
    Lets d̶a̶n̶c̶e dense.
    Ответ написан
    Комментировать
  • Как определить элемент, по которому был совершен клик?

    $(document).on('click', 'a[class^="id"]', function(e) {
        e.preventDefault();
        console.log(e.target);
        console.log(this);
        alert('Вы кликнули по ссылке с классом ' + this.className);
    });

    В e.target и this - элемент, по которому кликнули.
    Делегирование поможет поймать клик на динамически создаваемых элементах
    Ответ написан
    4 комментария
  • Как научиться пользоваться методологией БЭМ?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Не могу научиться пользоваться методологией, не могу просто взять глядя на макет и разбить его на блоки и элементы

    Тут БЭМ вторичен.

    Попробуйте представить, что вам нужно сделать верстку для сотни похожих (только похожих) сайтов. Вот первый готов. Вы берете второй макет, садитесь работать и понимаете, что снова есть блок, например, последних новостей, все тоже самое, дата-заголовок-текст-подробнее. Ах, как было бы хорошо, взять и сделать ctrl+c ctrl+v из предыдущей работы. Вот подумайте, как записать все стили так, чтобы при переиспользовании на этом же сайте или в другом проекте нужно было бы переписывать как можно меньше кода, а стили внутренних элементов не "поссорились" с тем кодом который уже есть в новом проекте.
    Ответ написан
  • В чем идея Mobile First подхода?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Сумев обходиться малым, позволить себе больше — проще, чем обладая многим, начать ограничивать себя.

    То же длиннее и на англ. в посте.
    абзац
    Progressive Advancement has won the game for now as far as I can see. If UI/UX designers start a product design with its desktop version, they will inevitably want to make use of most of the advantages of the advanced end. For example, the hover effect which is supported by a cursor mouse; HD images & complex charts which can display normally only when there is a recent bandwidth. In this way, the designers will make efforts to complete an amazing desktop version and only to find it can hardly be adopted on a mobile end unless they give up a lot of beautiful ideas. If so, the mobile end version will be more like an afterthought, an incomplete product which’s been watered down.
    Ответ написан
    Комментировать
  • Проблемы с height: 100vh на мобильном. Как решить?

    @artem_music
    Еще есть нюанс, что в айпэде 100% высоты - это высота до панели вкладок, а 100vh - это высота с учетом пространства под ними :)

    Один вариант - делать общий враппер с 100% высоты и от этого исходить уже, по крайней мере я так решал эту проблему
    Ответ написан
    6 комментариев
  • Почему глюк с прокруткой?

    Посмотрите решение аналогичного вопроса на stackoverflow
    Ответ написан
    Комментировать
  • Возможно ли запретить прокрутку в iOS Safari с сохранением текущего положения?

    SmthTo
    @SmthTo Автор вопроса, куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Достаточно простое решение нашел на kinopoisk.ru. Как и всегда в таких случаях, оно лежало на поверхности.

    В переменную сохраняем текущее положение прокрутки body, на body вешаем стилями полученное значение (только отрицательное) в свойство top. Так же нужно добавить position: fixed и left: 0 (right: 0 тоже можно, хуже не будет). Да-да, всё же fixed, засим, может поломать transform.

    Вот такие inline-стили для body от работы данного метода на Kinopoisk:
    top: -345px;
    left: 0px;
    right: 0px;
    position: fixed;

    Проверил у себя на устройствах: работает в iOS Safari 11 и 12. Иных путей решения данной проблемы найти не удалось.

    Update. Забыл добавить функции, что я написал, они не супер-гипер крутые, но рабочие:
    // 1. Фиксация <body>
    function bodyFixPosition() {
    
      setTimeout( function() {
      /* Ставим необходимую задержку, чтобы не было «конфликта» в случае, если функция фиксации вызывается сразу после расфиксации (расфиксация отменяет действия расфиксации из-за одновременного действия) */
    
        if ( !document.body.hasAttribute('data-body-scroll-fix') ) {
    
          // Получаем позицию прокрутки
          let scrollPosition = window.pageYOffset || document.documentElement.scrollTop;
    
          // Ставим нужные стили
          document.body.setAttribute('data-body-scroll-fix', scrollPosition); // Cтавим атрибут со значением прокрутки
          document.body.style.overflow = 'hidden';
          document.body.style.position = 'fixed';
          document.body.style.top = '-' + scrollPosition + 'px';
          document.body.style.left = '0';
          document.body.style.width = '100%';
    
        }
    
      }, 15 ); /* Можно задержку ещё меньше, но у меня работало хорошо именно с этим значением на всех устройствах и браузерах */
    
    }
    
    // 2. Расфиксация <body>
    function bodyUnfixPosition() {
    
      if ( document.body.hasAttribute('data-body-scroll-fix') ) {
    
        // Получаем позицию прокрутки из атрибута
        let scrollPosition = document.body.getAttribute('data-body-scroll-fix');
    
        // Удаляем атрибут
        document.body.removeAttribute('data-body-scroll-fix');
    
        // Удаляем ненужные стили
        document.body.style.overflow = '';
        document.body.style.position = '';
        document.body.style.top = '';
        document.body.style.left = '';
        document.body.style.width = '';
    
        // Прокручиваем страницу на полученное из атрибута значение
        window.scroll(0, scrollPosition);
    
      }
    
    }


    Для Bootstrap'овских модальных окон можно сделать универсальный вызов этих функций при их открытии и закрытии:

    $(document).on('shown.bs.modal', function () { // открытие любого модального окна Bootstrap
      bodyFixPosition();
    })
    
    $(document).on('hidden.bs.modal', function () { // закрытие любого модального окна Bootstrap
      bodyUnfixPosition();
    })
    Ответ написан
    3 комментария
  • Как сверстать подобный блок?

    @forspamonly2
    без картинок такой фон можно двумя линейными градиентами изобразить.

    на нижнем резкие переходы от тёмного к светлому и снова к тёмному, а на верхнем под другим углом такие же переходы, но между тёмным и прозрачным.



    а псевдоэлементами такое лучше не делать.
    Ответ написан
    Комментировать
  • Ребята, объясните пожалуйста как это работает?

    Seasle
    @Seasle Куратор тега JavaScript
    Все очень просто. Смотрите, у нас есть массив const numbers = [1, 2, 4, 8];. Мы проходим по нему циклом for, при этом заранее не сохраняя длину массива, таким образом, если удалять в цикле каждый раз текущий индекс, то при следующей итерации будет пересчитано условие i < arr.length, но 1 элемент то мы удалили, и следовательно цикл завершится раньше. Чтобы этого не произошло, i уменьшают на 1. В тот момент, когда удаляется элемент, i при следующей итерации «остается на месте».
    Ответ написан
    Комментировать