半六边形悬停效果

时间:2015-06-24 09:47:42

标签: jquery css css3 svg css-shapes

这里有一个小例子:

HTML:

<section>
  <div class="hexagon">
    <div class="hex1">
      <div class="hex2" style="background: url('http://25.media.tumblr.com/tumblr_mb3lh6abw91rg4gq5o1_500.jpg') center no-repeat">
        <div class="desc">
          <h2>Normale Seite</h2>
        </div>
      </div>
      <!--/hex2-->
    </div>
    <!--/hex1-->
  </div>
  <!--/hexagon-->
</section>

CSS:(SCSS)

@import "compass/css3";

/* Variables */
$width: 300px;
$pink: rgba(230,0,98,.75);
$green: rgba(169,160,50,.75);
$yellow: rgba(252,171,55,.75);
$brown: rgba(83,70,54,.75);

body {
  background: #fff;
}

section {
  margin: 0 auto;
  text-align: center;
  width: 960px;
}

.hexagon {
  @include rotate(120deg);
  cursor: pointer;
  height: ($width *2);
  overflow: hidden;
  visibility: hidden;
  width: $width;
}

.hex1 {
  @include rotate(120deg);
  height: 100%;
  overflow: hidden;
  width: 100%;
}


.hex2 {
  @include rotate(120deg);
  height: 100%;
  position: relative;
  visibility: visible;
  width: 100%;
}

.desc {
  color: white;
  font-family: 'Lato', sans-serif;
  font-size: 0.8em;
  font-weight: 300;
  height: ($width * 2);
  line-height: 1.5em;
  position: absolute;
  text-align: center;
  text-transform: uppercase; 
  visibility: visible;
  width: $width;
  &.base {
    background: $pink;
  }
  &.one {
    background: $yellow;
  }
  &.two {
    background: $green;
  }
  &.three {
    background: $brown;
  }
  h2 {
    margin: ($width - ($width / 4)) 20px 0 20px;
  }
}

JS:(jQuery)

$(document).ready(function() {
  var color = 'one';
  var counter = 0;
  $('.desc').hide();
  $('.hexagon').hover(
    function() {
      $(this).find('.desc').fadeIn('fast');
      counter++;
      if (counter === 0) {
        color = 'base';
      } else if (counter === 1) {
        color = 'one';
      } else if (counter === 2) {
        color = 'two';
      } else if (counter === 3) {
        color = 'three';
      } else if (counter >= 4){
        counter = 0 ;
        color = 'base';
      }
      $(this).find('.desc').addClass(color);
    }, 
    function() {
      $(this).find('.desc').fadeOut('fast', function() {
        $(this).removeClass(color);
      });
    });
});

CodePen Demo

我找不到将六边形切割成两部分的方法。

我现在被困住了。我想要一个半六边形,一个具有悬停效果的梯形。形式是这个六边形。切口必须在左下角到右上角之间。当我将鼠标悬停在左上角的六边形时,我希望在中心有另一个文字,当悬停在六边形的右下部分时,我需要另一个文本。

this Logo

enter image description here

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

CSS中的这种形状将非常困难。您最好的选择是使用SVG,这种几何形状的构建,使用和样式更容易。

您需要做的就是更改文本的颜色和位置。

.top {
  fill: red;
}
.top:hover {
  fill: blue;
}
.bottom {
  fill: orange;
}
.bottom:hover {
  fill: green;
}
<svg height="200" width="200" viewBox="0 0 100 116">
  <polygon points="2,31 52,2 98,29 89,34 52,13 11,36 11,79 2,84" class="top"></polygon>
  <polygon points="6,91 15,86 53,107 93,84 93,40 102,35 102,89 53,116" class="bottom"></polygon>
  <text x="40" y="60">test</text>
</svg>