Назначить через jquery элементу display:flex

382
28 декабря 2016, 02:54

Вывожу блок

//block search 
    $('.openSearch').click(function () { 
        $('.social__hidd').stop().css({ 
            opacity: 0.0, 
            display:'none' 
        }); 
        $('.search').stop().fadeIn(0).css({ 
            display:'flex' 
        }).css({ 
            // display: '-webkit-flex' 
        }); 
    }); 
 
    $('.closeSearch').click(function () { 
        $('.social__hidd').stop().css({ 
            opacity: 1, 
            display:'block' 
        }); 
        $('.search').fadeOut(0); 
 
    });
.search{ 
  color: @search; 
  position: absolute; 
  right: 0; 
  top: 20%; 
  display: -webkit-box; 
  display: -webkit-flex; 
  display: -ms-flexbox; 
  display: none; 
  -webkit-box-orient: horizontal; 
  -webkit-box-direction: normal; 
  -webkit-flex-direction: row; 
  -ms-flex-direction: row; 
  flex-direction: row; 
  -webkit-box-align: center; 
  -webkit-align-items: center; 
  -ms-flex-align: center; 
  align-items: center; 
  -webkit-box-pack: center; 
  -webkit-justify-content: center; 
  -ms-flex-pack: center; 
  justify-content: center; 
  z-index: 25; 
   
  i{ 
    color: #fff; 
  } 
 
 
 
  &__cont{ 
    display: -webkit-box; 
    display: -webkit-flex; 
    display: -ms-flexbox; 
    display: flex; 
    -webkit-box-orient: horizontal; 
    -webkit-box-direction: normal; 
    -webkit-flex-direction: row; 
    -ms-flex-direction: row; 
    flex-direction: row; 
    -webkit-box-align: center; 
    -webkit-align-items: center; 
    -ms-flex-align: center; 
    align-items: center; 
    border-bottom: 1px solid @search; 
    margin-right: 13px; 
  } 
   
  &__input{ 
    width: 207px; 
    background-color: transparent; 
    border:none; 
    height: 30px; 
    outline: none; 
 
  }
<div class="social"> 
                <div class="social__hidd"> 
                    <a href=""><i class="fa fa-facebook" aria-hidden="true"></i></a> 
                    <a href=""><i class="fa fa-twitter" aria-hidden="true"></i></a> 
                    <a href=""><i class="fa fa-instagram" aria-hidden="true"></i></a> 
                    <i class="fa fa-search openSearch" aria-hidden="true"></i> 
                </div> 
 
            </div> 
            <div class="search"> 
                <div class="search__cont"> 
                    <input class="search__input main-textLato" type="text" placeholder="Search..."> 
                    <a href=""><i class="fa fa-search" aria-hidden="true"></i></a> 
                </div> 
                <i class="fa fa-times closeSearch" aria-hidden="true"></i> 
            </div>

По нажатию на кнопку поиск .openSearch:

Скрываются соц сети .social и показывается блок .search. Блок .search организован на flex, поэтому через jq назначаю ему display:'flex'. Во всех браузерах, кроме Safari, работает нормально:

Но в Safari не так: Причину узнал, дело в том что во всех браузерах код jq работает корректно и блоку .search назначается инлайновый стиль display:flex, однако в Safari вместо этого назначается инлайновый стиль display:block. Почему так происходит понять не могу, что делаю не так? Спасибо!

Answer 1

У вас есть код для flexbox с вендорными префиксами наверняка для поддержки старых браузеров.

display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;

Так вот, чтобы это работало сделайте так. Вынесите этот код в класс

.flex {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}

Затем из jQuery используйте функцию toggleClass с классом flex. Либо ещё функции addClass и removeClass.

Также в jQuery UI функция toggleClass расширена и позволяет анимировать включение/отключение класса.

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

READ ALSO
Как наложить картинку на блок?

Как наложить картинку на блок?

У меня есть блок и есть картинкаКак наложить одно на другое?

539
Проблемы с подключенным шрифтом

Проблемы с подключенным шрифтом

При подключении шрифта из google fonts, начинают смещаться соседние элементы от элементов с установленным шрифтомЧто за косяки? первую проблему...

331
Выравнивание блоков html

Выравнивание блоков html

В общем, стоит задача сделать галерею для портфолио, блоки располагаются ровно один под одним

408
Переход по ссылке js

Переход по ссылке js

Хочу узнать у опытных программистов, возможно ли реализовать переход по ссылке, но так чтоб оказаться на определенном блоке страницы, а не в ее начале,...

388