2013-04-22 195 views
0

我已经半成功地做到了这一点,但我得到了不一致和奇怪的行为,我有点难以修复......它在mouseover和mouseout事件中的大约一半的时间工作。 ..不知道为什么,如果有人能够至少指出我在正确的方向来解决问题,为什么和会是最满的。试图创建jQuery的鼠标悬停和鼠标事件

HTML:

<div class="container"> 
    <div id="content"> 
     <header id="effect-me"> 
      <h1>sheikhart.com</h1> 
     </header> 
     <div class="row"> 
      <div class="shan-half"> 
       <div class="circle"><p>Shan</p></div> 
      </div> 
      <div class="lindsay-half"> 
       <div class="circle"><p>Lindsay</p></div> 
      </div> 
     </div> 
    </div> 
</div> 

CSS:

/* #444 looks better than black: twitter.com/H_FJ/statuses/11800719859 */ 
body, select, input, textarea { 
    color:#444; 
} 

/* www.aestheticallyloyal.com/public/optimize-legibility/ */ 
h1,h2,h3,h4,h5,h6 { 
    font-weight: bold; 
    text-rendering: optimizeLegibility; 
} 

/* maxvoltar.com/archive/-webkit-font-smoothing */ 
html { 
    -webkit-font-smoothing: antialiased; 
    background: url(images/index-bg.png) repeat-y center top; 
    background-color: #111111; 
} 

html, body { 
    margin: 0; 
    padding: 0; 
    width: 100%; 
    height: 100%; 
    display: table 
} 

sub { 
    vertical-align: sub; 
    font-size: smaller; 
} 

sup { vertical-align: super; 
    font-size: smaller; 
} 

/* align checkboxes, radios, text inputs with their label 
    by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css */ 
input[type="radio"] { 
    vertical-align: text-bottom; 
} 

input[type="checkbox"] { 
    vertical-align: bottom; 
    *vertical-align: baseline; 
} 

.ie6 input { 
    vertical-align: text-bottom; 
} 

/* hand cursor on clickable input elements */ 
label, 
input[type=button], 
input[type=submit], 
button { 
    cursor: pointer; 
} 

/* These selection declarations have to be separate. 
    No text-shadow: twitter.com/miketaylr/status/12228805301 
    Also: hot pink. */ 
::-moz-selection { 
    background: #fb8a00; 
    color:#fff; 
    text-shadow: none; 
} 

::selection { 
    background:#fb8a00; 
    color:#fff; 
    text-shadow: none; 
} 

/* j.mp/webkit-tap-highlight-color */ 
a:link { 
    -webkit-tap-highlight-color: #FF5E99; 
} 

/* always force a scrollbar in non-IE */ 
html { 
    overflow-y: scroll; 
} 

/* make buttons play nice in IE: 
    www.viget.com/inspire/styling-the-button-element-in-internet-explorer/ */ 
button { 
    width: auto; 
    overflow: visible; 
} 

/* bicubic resizing for non-native sized IMG: 
    code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ */ 
.ie7 img { 
    -ms-interpolation-mode: bicubic; 
} 


/******************************* 
* Non-semantic helper classes * 
*******************************/ 

/* for image replacement */ 
.ir { 
    display:block; 
    text-indent:-999em; 
    overflow:hidden; 
    background-repeat: no-repeat; 
} 

/* Hide for both screenreaders and browsers 
    css-discuss.incutio.com/wiki/Screenreader_Visibility */ 
.hidden { 
    display:none; 
    visibility:hidden; 
} 

/* Hide only visually, but have it available for screenreaders 
    www.webaim.org/techniques/css/invisiblecontent/ 
    Solution from: j.mp/visuallyhidden - Thanks Jonathan Neal! */ 
.visuallyhidden { 
    position:absolute !important; 
    clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 
    clip: rect(1px, 1px, 1px, 1px); 
} 

/* Hide visually and from screenreaders, but maintain layout */ 
.invisible { 
    visibility: hidden; 
} 

/* >> The Magnificent CLEARFIX << */ 
.clearfix:after { 
    content: "."; 
    display: block; 
    height: 0; 
    clear: both; 
    visibility: hidden; 
} 

.clearfix { 
    display: inline-block; 
} 

* html .clearfix { 
    height: 1%; 
} /* Hides from IE-mac \*/ 

.clearfix { 
    display: block; 
} 

/* Fontface */ 

@font-face { 
    font-family: 'abeatbykairegular'; 
    src: url('fonts/abeatbykairegular-webfont.eot'); 
    src: url('fonts/abeatbykairegular-webfont.eot?#iefix') format('embedded-opentype'), 
     url('fonts/abeatbykairegular-webfont.woff') format('woff'), 
     url('fonts/abeatbykairegular-webfont.ttf') format('truetype'), 
     url('fonts/abeatbykairegular-webfont.svg#abeatbykairegular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

/* Primary Styles 
* Author: Resonance Design (Richard Bakos) 
* Web: http://www.resonance-design.net 
*/ 

body { 
    font-family: Arial, Helvetica, sans-serif; 
    font-size: 16px; 
} 

hr { 
    max-width: 1200px; 
    margin: 1em auto; 
    border-bottom: 0; 
    border-top: 1px solid rgba(191, 191, 191, 0.5); 
} 

header { 
    width: 300px; 
    background: #111; 
    border: 1px solid #FFF; 
    border-radius: 10px; 
    margin: auto; 
    text-align: center; 
} 

header h1 { 
    width: auto; 
} 

.effected-1 { 
    border-color: #FF7700; 
    -moz-transition: all 1s; 
    -webkit-transition: all 1s; 
    -o-transition: all 1s; 
    transition:width all 1s; 
} 

.effected-2 { 
    border-color: #FFFFFF; 
    -moz-transition: all 1s; 
    -webkit-transition: all 1s; 
    -o-transition: all 1s; 
    transition:width all 1s; 
} 

.container { 
    width: 100%; 
    max-width: 1200px !important; 
    display: table-cell; 
    vertical-align: middle; 
    margin: auto; 
} 

#content { 
    width: 100%; 
    max-width: 1200px !important; 
    margin: auto; 
} 

.row { 
    width: 100%; 
} 

.shan-half { 
    width: 50%; 
    float: left; 
    vertical-align: middle; 
} 

.lindsay-half { 
    width: 50%; 
    float: right; 
    vertical-align: middle; 
} 

.circle { 
    border-radius: 50%; 
    background: #fff; 
    width: 200px; 
    height: 200px; 
    margin: auto; 
    font-size: 20px; 
    text-align: center; 
    color: #111; 
    -moz-transition: all 1s; 
    -webkit-transition: all 1s; 
    -o-transition: all 1s; 
    transition:width all 1s; 
} 

.circle:hover { 
    background: #FF7700; 
    cursor: pointer; 
    color: #FFF; 
    -moz-transform:rotate(360deg); 
    -webkit-transform:rotate(360deg); 
    -o-transform:rotate(360deg); 
    transform:rotate(360deg); 
} 

.circle p { 
    padding-top: 90px; 
} 

JS:

$('.circle').mouseover(function() { 
    $('#effect-me').toggleClass('effected-1'); 
}); 
$('.circle').mouseout(function() { 
    $('#effect-me').toggleClass('effected-2'); 
}); 

请查看小提琴:http://jsfiddle.net/resonancedesign/Fgemx/

,你从观看小提琴,我想添加和删除类基于不同元素的鼠标悬停及移出事件的要素看...

如果有更优雅的方式做这个或简单的东西我错过了我自己的努力,从我的例子,我张开耳朵...

+0

对我的作品在Chrome 26. – 2013-04-22 03:36:33

回答

1

通过切换,你有时会添加这两个类。

试试这个:

$('.circle').mouseover(function() { 
    $('#effect-me').attr('class', 'effected-1'); 
}); 
$('.circle').mouseout(function() { 
    $('#effect-me').attr('class', 'effected-2'); 
}); 
+0

谢谢了一堆...我以为我试过这个没有运气,但显然我没有或一定错过了我的语法中的东西......再次感谢! – 2013-04-22 14:20:25

1

代码的一些解释。

首先,您需要一个添加转换的元素(在您的情况下它会是#effect-me)。现在,这只是告诉浏览器在元素样式发生变化时该做什么。它本身不会做任何转换。

#effect-me { 
    border: 1px solid #fff; 
    -moz-transition: border 1s ease-out; 
    -webkit-transition: border 1s ease-out; 
    -o-transition: border 1s ease-out; 
    transition: border 1s ease-out; 
} 

接下来,您需要为元素添加新样式,以便它可以从原始样式过渡到新样式。

#effect-me.on { border: 1px solid #f70 } 

现在你已经到位的元素,你只需要添加以添加悬停新样式所需的JavaScript

$('.circle').hover(
    function(){ 
     $('#effect-me').addClass('on'); 
    }, 
    function(){ 
     $('#effect-me').removeClass('on'); 
    } 
); 

一步到位http://jsfiddle.net/CqDNf/

+0

谢谢!这当然也可以,但是,与第一个答案相比,它似乎比需要更多...它仍然是一个可行的解决方案,非常感谢! – 2013-04-22 15:32:44

+0

另一种解决方案对我来说工作不正常(过渡时间有些延迟,有时需要几个小时才能启动),这就是为什么我添加了这个。 – 2013-04-22 15:43:41

+0

我看到...在哪个浏览器和操作系统中? – 2013-04-22 23:02:51