Ответы пользователя по тегу CSS
  • Почему в Firefox не подгружаются изображение пока не нажмешь F12?

    @alexalexes
    У вас на странице куча миниатюр на 2500x2500 по ~1Мб каждая.
    Идет гонка, кто быстрей загрузится: скрипты или картинки.
    Скрипты находятся в конце, и они последние начинают загрузку.
    Такое расположение скриптов рекомендуют разработчики Google.
    Еще они рекомендуют делать упрощенный функционал сайта, пока скрипты не вступили в свою силу после того, тогда как загрузятся.
    Что требуется этому сайту:
    1) Создать и наладить отображение упрощенного стиля;
    2) Найти баланс в размере миниатюр.
    Ответ написан
  • Что быстрее градиент или изображение?

    @alexalexes
    Это не вопрос быстродействия, а вопрос адаптации под различные браузеры.
    Если бы все браузеры могли обрабатывать свойство градиент, никто бы не заморачивался с картинками. Особенно, было актуально во времена WinXP с IE7 / IE8.
    Ответ написан
    Комментировать
  • Нужно создать кнопку, и когда кто-то нажимает, я хочу отобразить метку со ссылкой. Как это можно сделать?

    @alexalexes
    Управляйте видимостью вашей ссылки по событию кнопки onclick.
    Какие тут проблемы могут возникнуть-то у вас?
    <a id="my_link" href="https://vk.com/durov" target="_blank" style="display: none;">
      <img src="img/57d3d0a9e386c157136717cc.png" width="30px"/>
    </a> 
    <input type = "button" onclick = "document.getElementById('my_link').style.display = 'inline';" value = "связаться со мной" />
    Ответ написан
    Комментировать
  • Как вывести и одновременно передать значение value в форме HTML?

    @alexalexes
    Кнопку оставляете в покое, значение передаете скрытым полем.
    <form action="?action=select_pay" method="POST">
    <input type="hidden"  name="pay_mode" value="20"  />
    <input type="submit" class="superbutton"  value="Яндекс Деньги"  />
    </form>
    <form action="?action=select_pay" method="POST">
    <input type="hidden"  name="pay_mode" value="10"  />
    <input type="submit" class="superbutton"  value="Еще одна платежка"  />
    </form>
    Ответ написан
  • Почему возникает "неровная прокрутка"?

    @alexalexes
    Анимация прокрутки происходит всегда за фиксированное время (сейчас 500 мс).
    Если top получается 100 пикселей, то промотка будет казаться медленней, а если 1000 пикселей - то быстро.
    А нужно сделать так, чтобы время анимации было пропорционально длине "прыжка".
    var anim_speed = 300; // пикселей в секунду
    var anim_time = (top * 1000) / anim_speed; // 1000 - поправка на милисекунды
    //анимируем переход на расстояние 
    $('body,html').animate({scrollTop: top}, anim_time);

    PS: Обычная школьная формула по физике: время равно расстоянию деленное на скорость.
    Ответ написан
    Комментировать
  • Как сделать кроссбраузерное оформление для Select?

    @alexalexes
    select-ы, чекбоксы, полосы прокрутки - это самые некастомизируемые элементы веб интерфейса.
    В качестве альтернативы используют JQuery ui виджеты.
    Ответ написан
    Комментировать
  • Как запустить jQuery анимацию (плагин) при доскролле?

    @alexalexes
    Написал общее решение для вашей задачи, когда необходимо обработать доскроллинг.
    Запускайте плагин, когда наступает ситуация "выполнения действия", или выполняйте метод плагина, который перезапускает анимацию.

    <style>
    #div1
    {
      display: block;
      width: 400px;
      height: 1400px;
      background-color: green;
    }
    #div2
    {
      display: block;
      width: 400px;
      height: 400px;
      background-color: red;
    }
    </style>
    <div id="div1">
    </div>
    <div id="div2">
    </div>
    <script>
      //Функция для определения необходимости выполнения действия,
    //связанное с появлением элемента elem_id в видимой части документа
      function SomethingToDoElem(e, elem_id)
      {
        var elem = document.getElementById(elem_id);
        if(elem === null)
          return;
        //определение размера видимой части документа без JQuery
        var opera = (navigator.userAgent.toLowerCase().indexOf('opera') > -1),
        html = document.documentElement,
        body = document.body,
        w = document.compatMode=='CSS1Compat' && !opera ? html.clientWidth : body.clientWidth,
        h = document.compatMode=='CSS1Compat' && !opera ? html.clientHeight : body.clientHeight;
        // если величина прокрутки по вертикали + видимая высота документа
    //превышает расстояние от верха документа до элемента,
        // для которого требуется действие доскроллинга, то выполняем это действие
        if(e.currentTarget.scrollY + h > elem.offsetTop)
        {
          var is_did_something = elem.getAttribute('is_did_something'); // если действие однократного применения,
    //то получаем данные о том, что оно не выполнялось ранее, например, с помощью атрибута тега.
          if(is_did_something === null) // атрибут не создан, значит действия не было
          {
            setTimeout(function(){elem.style.backgroundColor = 'blue'; }, 1000); // выполняем действие
            elem.setAttribute('is_did_something', 1); // записываем, что действие выполнили
    // для проверки однократности его выполнения
          }
        }
      }
      // Ловим события, для которых возможно понадобиться действие доскроллинга
      
      // на загрузку документа, лучше использовать JQuery аналог
      window.onload = function(e)
      {
        SomethingToDoElem(e, "div2");
      }
      
      // на прокрутку документа
      window.onscroll = function(e)
      {
        SomethingToDoElem(e, "div2");
      }
      
    // на изменение размера окна документа, если дизайн резиновый
    // и интересуемый элемент div2 может изменять в этом случае свое положение
    // при ресайзе окна браузера.
     
    
    // !!!: лучше не привязывать через $().on('resize', ...) криво срабатывает вызов,
    // использовать только нативные способы подписки на событие.
      window.onresize = function(e)
      {
        SomethingToDoElem(e, "div2");
      }
    
    // Также нужно вызывать  SomethingToDoElem(e, "div2"); при любом динамическом изменении
    // контента страницы или блока, где этот контент расположен.
    </script>
    Ответ написан
    Комментировать
  • Как сделать чтобы при повторном нажатии элемент переворачивался?

    @alexalexes
    Как вариант, с помощью JS добавляете обработчик событий onmouseout и touchend, который меняет класс у элемента div с классом flipper. Попеременно, когда мышь покидает блок или касание прекращается, его состояние изменять с class="flipper right-rotate" на "flipper left-rotate" и обратно.
    Соответственно, вращения будут обозначены двумя различными правилами, под каждое состояние "триггера":
    .flip-container.hover .flipper.right-rotate {}
    .flip-container.hover .flipper.left-rotate {}

    Можно применить более изящное решение, но оно находится в компетенции технологии Sass, увы, подсказать реализацию не смогу, но уверен, что такие метаморфозы с запоминанием состояний объектов - это в порядке вещей там.
    Ответ написан
    Комментировать
  • Ширина ячейки таблицы ограничивается самым длинным словом - как убрать ограничение?

    @alexalexes
    Даже нужно использовать CSS.
    Попробуйте для ячеек таблицы вот такие свойства:
    htmlbook.ru/css/word-wrap
    htmlbook.ru/css/text-overflow

    PS: При верстке, вообще, нужно максимально использовать возможности CSS.
    Есть что-то нельзя добиться CSS стилями, то поправку стилей возможно делать через JS, но это путь к костылям.
    Ответ написан