响应式网站:如何保持移动,默认悬停层元素 "on"
responsive website: how to keep on mobile, hover layer element "on" by default
在我的网站上,有些项目图标在鼠标悬停时有一个层,显示标题。
我想要的是在移动设备上查看网站时始终显示该图层。
有一段 javascript 代码显然可以处理这种效果:
/* Set Default Text Color for all elements */
$(".ut-hover").each(function(index, element) {
var text_color = $(this).closest('.ut-portfolio-wrap').data('textcolor');
$(this).find(".ut-hover-layer").css({ "color" : text_color });
$(this).find(".ut-hover-layer").find('.portfolio-title').attr('style', 'color: '+text_color+' !important');
});
$('.ut-hover').on('mouseenter touchstart', function() {
var hover_color = $(this).closest('.ut-portfolio-wrap').data('hovercolor'),
hover_opacity = $(this).closest('.ut-portfolio-wrap').data('opacity');
$(this).find(".ut-hover-layer").css( "background" , "rgba(" + hover_color + "," + hover_opacity+ ")" );
$(this).find(".ut-hover-layer").css( "opacity" , 1 );
});
$('.ut-hover').on('mouseleave touchend', function() {
$(this).find(".ut-hover-layer").css( "opacity" , 0 );
});
包含文字的图层css为"ut-hover-layer"
我需要修改该脚本以便如果在移动屏幕上看到该站点,"ut-hover-layer" 在加载时可见并始终保持不变,因此鼠标不会悬停应该会发生。
有人有解决方案吗?
如果有帮助,请点击此处 link 到站点
提前致谢!
According to another answer on stack (What is the best way to detect a mobile device in jQuery?) 你应该检测显示页面的设备是否是智能手机,如果是,你应该将 ut-hover-layers opacity 设置为 1 like这个:
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( navigator.userAgent ) ) {
jQuery( '.ut-hover-layer' ).each( function() {
jQuery( this ).css( 'opacity', '1' ).css( 'background' , 'rgba( 242, 35, 244, 0.8 )' );
});
}
不过我认为如果您尝试以这种方式检测智能手机:
if( jQuery( window ).width() < 768 ) {
jQuery( '.ut-hover-layer' ).each( function() {
jQuery( this ).css( 'opacity', '1' ).css( 'background' , 'rgba( 242, 35, 244, 0.8 )' );
});
}
它仍然有效。
也是纯js方式
if( document.body.clientWidth < 768 ) {
var elems = document.getElementsByClassName( 'ut-hover-layer' ),
i = 0;
for( ; i < elems.length; i += 1 ) {
elems[i].style.background = 'rgba( 242, 35, 244, 0.8 )';
elems[i].style.opacity = '1';
}
}
另一个选项是进行媒体查询并将其放入您的 css:
@media screen and (max-width: 1024px) and (min-width: 481px)
.ut-hover-layer {
opacity: 1!important;
top: 50%;
background: rgba(242, 35, 244, 0.8);
}
}
但是你的代码中会有一些无用的处理程序。
希望我对您的理解是正确的,这对您有所帮助。
在我的网站上,有些项目图标在鼠标悬停时有一个层,显示标题。
我想要的是在移动设备上查看网站时始终显示该图层。
有一段 javascript 代码显然可以处理这种效果:
/* Set Default Text Color for all elements */
$(".ut-hover").each(function(index, element) {
var text_color = $(this).closest('.ut-portfolio-wrap').data('textcolor');
$(this).find(".ut-hover-layer").css({ "color" : text_color });
$(this).find(".ut-hover-layer").find('.portfolio-title').attr('style', 'color: '+text_color+' !important');
});
$('.ut-hover').on('mouseenter touchstart', function() {
var hover_color = $(this).closest('.ut-portfolio-wrap').data('hovercolor'),
hover_opacity = $(this).closest('.ut-portfolio-wrap').data('opacity');
$(this).find(".ut-hover-layer").css( "background" , "rgba(" + hover_color + "," + hover_opacity+ ")" );
$(this).find(".ut-hover-layer").css( "opacity" , 1 );
});
$('.ut-hover').on('mouseleave touchend', function() {
$(this).find(".ut-hover-layer").css( "opacity" , 0 );
});
包含文字的图层css为"ut-hover-layer"
我需要修改该脚本以便如果在移动屏幕上看到该站点,"ut-hover-layer" 在加载时可见并始终保持不变,因此鼠标不会悬停应该会发生。
有人有解决方案吗?
如果有帮助,请点击此处 link 到站点
提前致谢!
According to another answer on stack (What is the best way to detect a mobile device in jQuery?) 你应该检测显示页面的设备是否是智能手机,如果是,你应该将 ut-hover-layers opacity 设置为 1 like这个:
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( navigator.userAgent ) ) {
jQuery( '.ut-hover-layer' ).each( function() {
jQuery( this ).css( 'opacity', '1' ).css( 'background' , 'rgba( 242, 35, 244, 0.8 )' );
});
}
不过我认为如果您尝试以这种方式检测智能手机:
if( jQuery( window ).width() < 768 ) {
jQuery( '.ut-hover-layer' ).each( function() {
jQuery( this ).css( 'opacity', '1' ).css( 'background' , 'rgba( 242, 35, 244, 0.8 )' );
});
}
它仍然有效。
也是纯js方式
if( document.body.clientWidth < 768 ) {
var elems = document.getElementsByClassName( 'ut-hover-layer' ),
i = 0;
for( ; i < elems.length; i += 1 ) {
elems[i].style.background = 'rgba( 242, 35, 244, 0.8 )';
elems[i].style.opacity = '1';
}
}
另一个选项是进行媒体查询并将其放入您的 css:
@media screen and (max-width: 1024px) and (min-width: 481px)
.ut-hover-layer {
opacity: 1!important;
top: 50%;
background: rgba(242, 35, 244, 0.8);
}
}
但是你的代码中会有一些无用的处理程序。
希望我对您的理解是正确的,这对您有所帮助。