Jump to content
  • 0

Почему переход в одном случае работает, а в другом - нет?


Launder
 Share

Question

http://jsfiddle.net/Launder/vc73z30v/2/

 

С 82 строки закомментировано, если снять комментирование переход не работает. С 77 строки полностью аналогичная ситуация и всё работает.

Почему такое странное поведение? Как сделать чтоб оба перехода заработали?

Спасибо!

если кому нужно - код выложу сюда.

Edited by Launder
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

http://jsfiddle.net/Launder/vc73z30v/5/

 

всё, вроде, переделал, и, вроде всё видится ровненько, но смущает одно:

для тени, получается, для тега <li> свойство меняется в соответствии с функцией, а вот для ul.list к этой функции добавляется прозрачность.

Как же сделать так, чтоб тень ДЛЯ ВСЕГО МЕНЮ добавлялась с одинаковой динамикой?

PS При этом нужно помнить, что на данный момент задержка для тени сделана потому, что когда ul.list ещё не успел стать непрозрачным, когда сразу добавляешь тень для <li>, то она начинает просвечивать через ещё прозрачный ul.list, в результате чего, при переходе, внизу главного меню возникает полоса. Чтоб этого не было заметно, перед началом появления тени введена небольшая задержка (для похожих целей, при обратном переходе тень исчезает быстрее остальных функций).

Это я пояснил для того, чтоб было понимание, что простые решения тут врят ли подойдут. Нужно именно согласовать как-то изменение функции box-shadow c opacity, а как это сделать мне пока не вполне понятно...

Edited by Launder
Link to comment
Share on other sites

  • 0

Похоже, что в указанном примере, всё работает ровненько именно потому, что изменение тени происходит НЕЗАВИСИМО от изменения прозрачности остальных элементов. Почему так происходит - непонятно.

Ведь в случае задания свойства opacity: 0 тени видно не будет. Соответственно и при изменении прозрачности с нуля до единицы тень также должна менять прозрачность, то есть для неё должны работать две функциии, общее изменение прозрачности, а поверх неё - функция измения самой тени. Но она меняется буд-то бы для неё прозрачность сразу установили на единицу, а изменения отображения тени происходят только по той функции, котороую в transition установили для box-shadow.

ЗЫ: кстати свойство visibility, в сочетании с transition также работает интересно, сначала оно просто включается без задержки, а при выключении, задержка составляет всё время изменения, затем оно сразу становится скрытым. Это работает как бы по-умолчанию, и, если почему-то не работает эти параметры можно поставить их вручную. Постепенное нарастание/убываение происходит из-за изменения прозрачности. При этом, для ul.list меняется свойство opacity, а для главного меню, изменение цвета от прозрачного до нужного, происходит через задания измения свойства background  для тега <a>.

ЗЫЗЫ: а свойство transition нужно задавать одним правилом для свойства, то есть:  transition: all 1s ease, box-shadow .5s ease .5s - правильно, а вот два транзишна, один для всех, другой персонально для box-shadow - не получится.

Но при этом можно задавать разные transition для прямых и обратных изменений, например:

UL#menu > li    {        transition: all 1s ease, box-shadow .5s ease;      }UL#menu > li:hover    {        transition: all 1s ease, box-shadow .7s ease .3s;        }

ЗЫЗЫЗЫ: ну и к слову об актуальности темы - оказывается что свойство display не работает со свойством transition. Соответственно, приходится пользоваться свойством visibility совместно с opacity, если есть желание задать плавный переход.

 

Link to comment
Share on other sites

  • 0

Display и visibility не имеют промежуточных числовых значений, которые могли бы меняться со временем. Скажем, половина между none и block — это сколько и как должно выглядеть? Так что логично, что они не работают с transition.

Если нужна прозрачность тени, смотри в rgba()

  • Like 1
Link to comment
Share on other sites

  • 0

Display и visibility не имеют промежуточных числовых значений, которые могли бы меняться со временем. Скажем, половина между none и block — это сколько и как должно выглядеть?

 

Ну да, согласен. Но visibility при этом, включается сразу, а выключается только в конце функции перехода. За счёт этого, видимо, и появляется возможность использовать для самого перехода свойство opacity.

 

 

Так что логично, что они не работают с transition.

 

Логично. Только visibility можно использовать косвенно, через opacity, а через display плавный переход, похоже, вообще никак не подключишь.

 

 

Если нужна прозрачность тени, смотри в rgba()

 

Спасибо за наводку. Но в первом приближении, получается вообще интересно: мало того, что изменение отображения подменю происходит за счёт изменения свойства opacity, свойсво box-shadow должно по-идее накладываться сверху (Слава Богу, почему-то не накладывается). А если ещё добавить изменение прозрачности тени, то получится сразу наложение трёх функций opacity, box-shadow и изменения прозрачности в box-shadow. Можно, конечно, box-shadow включить по-умолчанию, а изменять, при выделении, прозрачность через альфа-канал. Наверное, стоит поэксперементировать. :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Xandr555
      Добрый день. Размещено 2 блока по 3 изображения, отцентрировано flex, по плану при наведении курсора картинка затемняется, сверху появляется описание. Стили работают как задумано только в Chrome и Opera. В Сафари рамка не всплывает, текст не выравнивается. В IE 11 рамка всплывает, текст не выравнивается. Заранее благодарю.
      <div class="wrapper"> <div class="demo-content"> <div class="part"> <figure class="img-box"> <img alt=img src=https://s3-us-west-2.amazonaws.com/s.cdpn.io/331810/sample54.jpg> <figcaption><section class="imgone">По Вашему желанию электропроводку можно уложить в ПВХ-короб</section></figcaption> </figure> <figure class="img-box"> <img alt=img src=https://s3-us-west-2.amazonaws.com/s.cdpn.io/331810/sample73.jpg> <figcaption><section class="imgone">Красиво, эстетично и надежно - наше кредо!</section></figcaption> </figure> <figure class="img-box"> <img alt=img src=https://s3-us-west-2.amazonaws.com/s.cdpn.io/331810/sample58.jpg> <figcaption><section class="imgone">Такой вариант электропроводки рекомендуем, например, в подсобных постройках</section></figcaption> </figure> </div> </div> </div> <div class="wrapper"> <div class="demo-content"> <div class="part"> <figure class="img-box"> <img alt=img src=https://s3-us-west-2.amazonaws.com/s.cdpn.io/331810/sample54.jpg> <figcaption><section class="imgone">Вмонтированный в стену электросчетчик делает Вашу квартиру более объемной</section></figcaption> </figure> <figure class="img-box"> <img alt=img src=https://s3-us-west-2.amazonaws.com/s.cdpn.io/331810/sample73.jpg> <figcaption><section class="imgone">Устанавливайте новые светильники, мы поможем подобрать их по мощности</section></figcaption> </figure> <figure class="img-box"> <img alt=img src=https://s3-us-west-2.amazonaws.com/s.cdpn.io/331810/sample58.jpg> <figcaption><section class="imgone">Мы устанавливаем розетки и выключатели в любой компоновке</section></figcaption> </figure> </div> </div> </div> *, *:after, *:before { box-sizing: border-box; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; } .wrapper{margin:0 auto} .demo-content { text-align: center; } .part{max-height:310px;max-height:100%;display:flex;display:-moz-flex;display: -webkit-flex;justify-content:center} figure.img-box { text-align: center; position: relative; display: inline-block; overflow: hidden; margin: 3px 3px; max-width: 300px; width:100%; background-color:#DCDCDC; -webkit-box-shadow: 0 8px 17px 0 hex(#cccccc), 0 6px 20px 0 hex(#cfcfcf); box-shadow: 0 8px 17px 0 hex(#cccccc), 0 6px 20px 0 hex(#cfcfcf); } figure.img-box * { -webkit-box-sizing: padding-box; box-sizing: padding-box; -webkit-transition: all 0.2s ease-out; transition: all 0.2s ease-out; } figure.img-box img { max-width: 100%; vertical-align: top; } figure.img-box figcaption { position:absolute; top:0; bottom:0; left:0; right:0; align-items:center; z-index:1; display: flex; display: -webkit-flex; display: -moz-flex; display: -ms-flex; flex-direction:column; -webkit-flex-direction:column; -moz-flex-direction:column; -ms-flex-direction:column; justify-content:center; opacity:0; } figure.img-box:after { border: 8px solid #FF0000; position: absolute; content: ""; display: block; top: 50%; bottom: 50%; left: 0; right: 0; -webkit-transition: all 0.7s ease-in-out; transition: all 0.7s ease-in-out; -ms-transition: all 0.7s ease-in-out; opacity: 0; } figure.img-box:hover img { opacity:0.2; } figure.img-box:hover:after { top: 0; bottom: 0; opacity: 0.9; } .img-box .imgone { font-family:'Roboto',sans-serif; color:#00008B; font-size:16px; font-weight: 400; margin: 0; padding:0 10px; transform: scale(0); -webkit-transform:scale(0); -ms-transform:scale(0); -webkit-transition: all 1s ease 0s; transition: all 1s ease 0s; -ms-transition: all 1s ease 0s; } .img-box:hover figcaption, .img-box:hover .imgone { transform: scale(1); -webkit-transform: scale(1); -ms-transform: scale(1); opacity: 1; } скриншоты прилагаю



    • By Govt_sm80
      Привет всем.Не могу поменять размер иконок с сайта https://fontawesome.com/icons/key?style=solid  и не получается сделать такие разделы как на картинке, может кто-то занет как это сделать?      вот ссылка на код    http://jsfiddle.net/kcd86y01/1/     и они еще должны выезжать  анимацией
    • By lokonaft
      Люди добрые, помогите разобраться, весь день пытаюсь понять почему у меня не получается.
      В общем идея была сделать одну красную кнопку, чтобы при наведении появлялось еще 4 зеленых.
      Реализовать попытался 2мя очень похожими способами, через div и через список.
      https://codepen.io/lokonaft/pen/GXqBBP - в данном случае почему то не работает transition
      https://codepen.io/lokonaft/pen/qMNMVL - в данном случае я то ли не могу правильно задать hover, то ли я чего то не понимаю
    • By Indorill24Empty
      Добрый день.
      При наведении на родительскую ссылку, дочерняя картинка и текст плавно меняют прозрачность:
      <a href="/pages/viewpage.action?pageId=936411868"><img src="/download/attachments/978223304/tk.png"/><span>Вакансии</span></a> .colo > div a span, .colo > div a img { transition: all .5s linear 0s; -o-transition: all .5s linear 0s; -moz-transition: all .5s linear 0s; -webkit-transition: all .5s linear 0s; -ms-transition: all .5s linear 0s; } .colo > div a:hover img, .colo > div a:hover span {opacity: .7;} Но помимо прозрачности происходит изменение размеров картинки, где то пикселей на 1-2.
      Менял all на opacity, linear на ease - так же странно работает.
      Подскажите пожалуйста, что это может быть?
    • By Launder
      Столкнулся со следующим странным поведением.
      В хроме пока работает transition, фон просвечивает через border-radius (наведите на первый пункт).
      В Лисе градиент имеют такую особенность: полосочка 10px, полосочка 10px, прозрачность, на стыке второй полосочки и прозрачности образуется некий серый фон толщиной пикселя в два. Поскольку фон в примере двухнаправленный, то Вы, убрав одно направление (65 или 66 строчка, не забудте в конце оставленной строчки поставить точку с запятой ), можете увидеть что полоска есть только в том направлении, где нулевой переход из цвета в прозрачность.
      По обеим глюкам: что это? откуда это? куда писать? какие способы бороться?
      Спасибо за внимание
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy