Last active
March 19, 2020 09:29
-
-
Save Ikaring/8414172 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* fixHeight - jQuery Plugin | |
* http://www.starryworks.co.jp/blog/tips/javascript/fixheightjs.html | |
* | |
* Author Koji Kimura @ STARRYWORKS inc. | |
* http://www.starryworks.co.jp/ | |
* | |
* Licensed under the MIT License | |
* | |
*/ | |
(function($){ | |
var isInitialized = false; | |
var parents = []; | |
var textHeight = 0; | |
var $fontSizeDiv; | |
$.fn.fixHeight = function() { | |
this.each(function(){ | |
var childrenGroups = getChildren( this ); | |
$.each( childrenGroups, function(){ | |
var $children = $(this); | |
if ( !$children.filter(":visible").length ) return; | |
var row = []; | |
var top = 0; | |
$children.each(function(){ | |
if ( top != $(this).position().top ) { | |
$(row).sameHeight(); | |
row = []; | |
top = $(this).position().top; | |
} | |
row.push(this); | |
}); | |
if ( row.length ) $(row).sameHeight(); | |
}); | |
}); | |
init(); | |
return this; | |
}; | |
$.checkFixHeight = function( i_force ) { | |
if ( $fontSizeDiv.height() == textHeight && i_force !== true ) return; | |
textHeight = $fontSizeDiv.height(); | |
$(parents).fixHeight(); | |
}; | |
$.fn.sameHeight = function() { | |
var maxHeight = 0; | |
this.css("height","auto"); | |
this.each(function(){ | |
if ( $(this).height() > maxHeight ) maxHeight = $(this).height(); | |
}); | |
return this.height(maxHeight); | |
}; | |
function getChildren( i_parent ) { | |
var $parent = $( i_parent ); | |
if ( $parent.data("fixHeightChildrenGroups") ) return $parent.data("fixHeightChildrenGroups"); | |
var childrenGroups = []; | |
var $children = $parent.find(".fixHeightChild"); | |
if ( $children.length ) childrenGroups.push( $children ); | |
var $groupedChildren = $parent.find("*[class*='fixHeightChild']:not(.fixHeightChild)"); | |
if ( $groupedChildren.length ) { | |
var classNames = {}; | |
$groupedChildren.each(function(){ | |
var a = $(this).attr("class").split(" "); | |
var i; | |
var l = a.length; | |
var c; | |
for ( i=0; i<l; i++ ) { | |
c = a[i].match(/fixHeightChild[a-z0-9_-]+/i); | |
if ( !c ) continue; | |
c = c.toString(); | |
if ( c ) classNames[c] = c; | |
} | |
}); | |
for ( var c in classNames ) childrenGroups.push( $parent.find("."+c) ); | |
} | |
if ( !childrenGroups.length ) { | |
$children = $parent.children(); | |
if ( $children.length ) childrenGroups.push( $children ); | |
} | |
$parent.data("fixHeightChildrenGroups", childrenGroups ); | |
parents.push( $parent ); | |
return childrenGroups; | |
} | |
function init() { | |
if ( isInitialized ) return; | |
isInitialized = true; | |
$fontSizeDiv = $(document.body).append('<div style="position:absolute;left:-9999px;top:-9999px;">s</div>'); | |
setInterval($.checkFixHeight,1000); | |
//$(window).resize($.checkFixHeight); | |
$.checkFixHeight(); | |
$(window).load( function(){ $.checkFixHeight(true); } ); | |
} | |
$(document).ready(function(){ | |
$(".fixHeight").fixHeight(); | |
//fixHeight after window resize | |
var timer = false; | |
$(window).resize(function() { | |
if (timer !== false) { | |
clearTimeout(timer); | |
} | |
timer = setTimeout(function() { | |
$('.fixHeight').fixHeight(); | |
}, 200); | |
}); | |
}); | |
})(jQuery); |
window resizeが終わったらチェックし直す
no conflictを使う意味がないので、カプセルの中に入れた
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
詳細は分かりませんが、これでエラーが出なくなりました。