За последние 24 часа нас посетили 21548 программистов и 1025 роботов. Сейчас ищет 651 программист ...

Css стиль при наведении

Тема в разделе "HTML и CSS", создана пользователем Mark54, 30 янв 2017.

Метки:
  1. Mark54

    Mark54 Новичок

    С нами с:
    24 сен 2016
    Сообщения:
    31
    Симпатии:
    1
    Есть изображение и рядом с изображением ссылка на одном уровне.
    На изображении css стиль, при наведении, оно опускается немного вниз.
    Как сделать чтобы при наведении и на ссылку, изображение опускалось так же вниз, но ссылка оставалась на месте.
    У меня же получается, что если я стиль прописываю к ссылке, она тоже сдвигается вниз.
    Помогите!)
    Код (CSS):
    1. .hvr-sink {
    2.   display: inline-block;
    3.   vertical-align: middle;
    4.   -webkit-transform: perspective(1px) translateZ(0);
    5.   transform: perspective(1px) translateZ(0);
    6.   box-shadow: 0 0 1px transparent;
    7.   -webkit-transition-duration: 0.3s;
    8.   transition-duration: 0.3s;
    9.   -webkit-transition-property: transform;
    10.   transition-property: transform;
    11.   -webkit-transition-timing-function: ease-out;
    12.   transition-timing-function: ease-out;
    13. }
    14. .hvr-sink:hover, .hvr-sink:focus, .hvr-sink:active {
    15.   -webkit-transform: translateY(8px);
    16.   transform: translateY(8px);
    17. }
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    я тебе открою секрет успешной веб-разработки: не делай то, что делать сложно
     
    denis01 нравится это.
  3. Mark54

    Mark54 Новичок

    С нами с:
    24 сен 2016
    Сообщения:
    31
    Симпатии:
    1
    А если надо, то что делать?)))
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    сказать "нет"

    но можно потрахаться только ради того, чтобы был дебильный никому не нужный эффект ховера из начала двухтысячных.
    Начни с того, чтобы запхать обои эти твои элемента в один контейнер и там уже играйся с его ховером и их маргинами. Есть шанс что этого хватит.
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Просто нужен правильный селектор.
     
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    html кода нет и ничего не понятно с какими элементами ты это проделываешь. Похоже, что с таблицей, но точно не понятно.
    Вот тебе пример, описанный igordata, а ты уже под свой код локализуй.

    HTML:
    1.  
    2. <div class="cont">
    3.          <img src="путь" />
    4.          <a href="путь"></a>
    5. </div>
    6.  
    Код (CSS):
    1. .cont {
    2. // стили для дива.
    3. }
    4.  
    5. .cont img {
    6.  
    7. //стили для картинки
    8. margin-top:5px;
    9.  
    10. }
    11.  
    12. .cont a {
    13.  
    14. //стили для ссылки
    15. margin-top:5px;
    16.  
    17. }
    18.  
    19. .cont a:hover {
    20.  
    21. margin-top:10px;
    22.  
    23. }
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    я не знаю ни одного селектора, работающего с права на лево. =( и там не нашел. Можно поменять картинку и ссылку местами, и шарашить флоатами, но это уже шаманство, и без контейнера тут не обойтись, а с контейнером можно так просто.
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Что-то из этого подойдет, я думаю, если правильно контейнер организовать. А еще можно бомбить через атрибуты.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    имхо с контейнером можно обойтись тегами или классами.
    олько я всё равно против смещения элемента интерфейса как ховер эффекта. Бэкграунд смещать - да. А сам элемент двигать - нет. А случись я ему мышку сверху наведу, он поедет, уедет из под мышки, дальше он будет возвращаться, приедет, а там его уже мышка ждёт, а он вновь от неё наутёк - дурдом!
     
  10. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    Надо попробовать, обжечься, получить бесценный опыт и больше никогда не использовать. Хочет человек дерганную ссылку - пусть попробует. Потом изменить не долго...
     
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Просто не надо топорно подходить к вопросу. Это элементарная задачка же. И уж тем более не надо для смещения элементов использовать маржины. 2017 год на дворе. https://jsfiddle.net/sratadjn/
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    какое-то время я пытался это прочесть

    да, транслейт заебись, я в него пока не верю, но пора, да. Всё равно не вижу смысла элементы двигать.
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Двигать при ховере я тоже не вижу смысла. Это не логично. Коль уж нужно что-то подобное, то логичнее, имхо, как-то так: https://jsfiddle.net/sratadjn/1/ обрати внимание, кстати, что надпись тоже скейлится. Объект ведет себя как gl-surface. Ну или как битмап.
    --- Добавлено ---
    А так, чтобы было понятнее, что там происходит, и почему нельзя для анимаций и эффектов юзать маржины, вот: https://jsfiddle.net/sratadjn/2/

    Красное - это контейнер. При отрабатывании анимашечки, его размеры не меняются. Трансформации это как бы изменение объекта относительно самого себя, но без влияния на верстку. Как если бы объект был фиксированно или абсолютно спозиционирован, но не выпадая из потока. Это поначалу рвет мозг, но это охрененный инструмент. В то время как изменение ширины-высоты или маржинов влияло бы и на контейнер. И все плыло бы к чертовой едрене фене, потому что контейнер влиял бы на что-то еще. И понеслааааась.

    Плюс, изменение параметров, отвечающих за верстку, по факту означает полный пересчет DOM-а. Это адулька. И кроме микро перделочек на костылях, ничего и не сваришь с таким подходом. А на трансформациях, например, у вконтакта работает мобильная версия галереи. Все эти вот пинчи, свайпы и тд, которые выглядят как нативные, на самом деле нифига таковыми не являются. При этом все работает быстро, плавно, потому что перерисовать элемент в новом месте с новым размером, поворотом и тд - это почти бесплатная операция, и DOM при этом не пересчитывается вообще.
    --- Добавлено ---
    Да, самая нямка в том, что хоть DOM и не пересчитывается, ты из JS всегда можешь узнать положение и размеры объекта под трансформацией, с учетом этой трансформации. То есть это не просто оторванное изображение объекта, скачущее по экрану, в то время как сам он хостится там же, где и был.
     
    TeslaFeo нравится это.