Как верстать блок

285
30 октября 2017, 22:39

Как правильно указать свойство transform: rotate(45deg) при :hover, чтобы блок крутился, а иконка внутри нет?

Answer 1

* { 
  margin: 0; 
  padding: 0; 
} 
 
html, 
body { 
  width: 100%; 
  height: 100%; 
  background: #272727; 
} 
 
#wrapper { 
  width: 100px; 
  height: 100px; 
  background: transparent; 
  position: relative; 
  margin: 30px 0 0 30px; 
} 
 
#logo { 
  width: 100px; 
  height: 100px; 
  background: url(http://icons.veryicon.com/png/Media/Free%20Flat%20Multimedia/Dslr%20Camera.png); 
  background-size: cover; 
  position: absolute; 
} 
 
#block { 
  width: 100px; 
  height: 100px; 
  background: transparent; 
  position: absolute; 
  border: 3px solid red; 
    transition:all .3s; 
} 
 
#wrapper:hover #block { 
  width: 100px; 
  transition:all .3s; 
  transform: rotate(45deg); 
  height: 100px; 
  background: transparent; 
  position: absolute; 
  border: 3px solid red; 
}
<div id="wrapper"> 
  <div id="logo"></div> 
  <div id="block"></div> 
</div>

Answer 2

Лучше всего подойдут псевдоэлементы :before или :after. Которые мы и будем крутить. Можно вообще не оборачивать в блок иконку. Принцип из примера будет понятен.

* { 
  margin: 0; 
  padding: 0; 
  -webkit-box-sizing: border-box; 
          box-sizing: border-box; 
} 
body { 
min-height: 100vh; 
display: -webkit-box; 
display: -ms-flexbox; 
display: flex; 
-webkit-box-pack: center; 
    -ms-flex-pack: center; 
        justify-content: center; 
-webkit-box-align: center; 
    -ms-flex-align: center; 
        align-items: center; 
} 
div { 
  display: block; 
  margin: 0 auto; 
  position: relative; 
  text-align: center; 
  width: 100px; 
  height: 100px; 
  line-height: 100px; 
  color: pink; 
  font-size: 2em; 
} 
 
div:before { 
  content: ''; 
  position: absolute; 
  left: 0; 
  top: 0; 
  right: 0; 
  bottom: 0; 
  border: 2px solid lightgrey; 
  -webkit-transition: all .4s cubic-bezier(0.24, 1.8, 0.68, 0.98); 
  -o-transition: all .4s cubic-bezier(0.24, 1.8, 0.68, 0.98); 
  transition: all .4s cubic-bezier(0.24, 1.8, 0.68, 0.98); 
  -webkit-transform: rotate(0deg); 
      -ms-transform: rotate(0deg); 
          transform: rotate(0deg); 
} 
 
div:hover:before { 
  border: 2px solid pink; 
  -webkit-transform: rotate(-45deg); 
      -ms-transform: rotate(-45deg); 
          transform: rotate(-45deg); 
}
<link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> 
<div><i class="fa fa-heart-o" aria-hidden="true"></i></div>

READ ALSO
столкнулся с вопросом как добавить в Leaflet, L.realtime

столкнулся с вопросом как добавить в Leaflet, L.realtime

нуждаюсь в помощи ,как добавить Lrealtime , чтобы маркеры двигались в текущем времени как тут : http://embed

270
Не работают ссылки на tablet &amp; mobile

Не работают ссылки на tablet & mobile

Есть слайдер CarouselВзял отсюда http://materializecss

263
Добавить &ldquo;+/-&rdquo; до и после input

Добавить “+/-” до и после input

ПриветствуюЕсть ли какая то возможность (через jQuery или CSS) добавить знаки + после инпута и знак - перед ним? При этом чтоб они располагались...

313
Создание таблицы many to many

Создание таблицы many to many

Нужно создать таблицу персонажа (character)Он имеет множество параметров(attribute, build, skill, quirk, advantage, disadvantege)

236