- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用完美运行的 vTicker,但在元素循环通过后,它们会丢失基于其伪类的 css 属性。我们的想法是让第一个和最后一个子项具有相同的不透明度,第二个和倒数第二个子项具有相同的不透明度,依此类推,中间项具有 100% 的不透明度。
我也研究过添加类来控制它,例如:
<ul>
<li class="item-1">Text</li>
<li class="item-2">Text</li>
</ul>
但是一旦 item-1 循环通过,它就会在保留类名的情况下进入列表的底部。我需要类名“item-1”始终位于列表中的第一项,即使在 vTicker 对其重新排序后也是如此。
我该怎么做?这是 vTicker 的代码:
/*! vTicker 1.14
http://richhollis.github.com/vticker/ | http://richhollis.github.com/vticker/license/ | based on Jubgits vTicker http://www.jugbit.com/jquery-vticker-vertical-news-ticker/ */
(function(d){var m={speed:700,pause:4E3,showItems:1,mousePause:!0,height:0,animate:!0,margin:0,padding:0,startPaused:!1},c={moveUp:function(a,b){c.animate(a,b,"up")},moveDown:function(a,b){c.animate(a,b,"down")},animate:function(a,b,e){var c=a.itemHeight,f=a.options,g=a.element.children("ul"),k="up"===e?"li:first":"li:last",l=g.children(k).clone(!0);0<f.height&&(c=g.children("li:first").height());c+=f.margin+2*f.padding;"down"===e&&g.css("top","-"+c+"px").prepend(l);if(b&&b.animate){if(a.animating)return;
a.animating=!0;g.animate("up"===e?{top:"-="+c+"px"}:{top:0},f.speed,function(){d(g).children(k).remove();d(g).css("top","0px");a.animating=!1})}else g.children(k).remove(),g.css("top","0px");"up"===e&&l.appendTo(g)},nextUsePause:function(){var a=d(this).data("state"),b=a.options;a.isPaused||2>a.itemCount||f.next.call(this,{animate:b.animate})},startInterval:function(){var a=d(this).data("state"),b=this;a.intervalId=setInterval(function(){c.nextUsePause.call(b)},a.options.pause)},stopInterval:function(){var a=
d(this).data("state");a&&(a.intervalId&&clearInterval(a.intervalId),a.intervalId=void 0)},restartInterval:function(){c.stopInterval.call(this);c.startInterval.call(this)}},f={init:function(a){f.stop.call(this);var b=jQuery.extend({},m);a=d.extend(b,a);var b=d(this),e={itemCount:b.children("ul").children("li").length,itemHeight:0,itemMargin:0,element:b,animating:!1,options:a,isPaused:a.startPaused?!0:!1,pausedByCode:!1};d(this).data("state",e);b.css({overflow:"hidden",position:"relative"}).children("ul").css({position:"absolute",
margin:0,padding:0}).children("li").css({margin:a.margin,padding:a.padding});isNaN(a.height)||0===a.height?(b.children("ul").children("li").each(function(){var a=d(this);a.height()>e.itemHeight&&(e.itemHeight=a.height())}),b.children("ul").children("li").each(function(){d(this).height(e.itemHeight)}),b.height((e.itemHeight+(a.margin+2*a.padding))*a.showItems+a.margin)):b.height(a.height);var h=this;a.startPaused||c.startInterval.call(h);a.mousePause&&b.bind("mouseenter",function(){!0!==e.isPaused&&
(e.pausedByCode=!0,c.stopInterval.call(h),f.pause.call(h,!0))}).bind("mouseleave",function(){if(!0!==e.isPaused||e.pausedByCode)e.pausedByCode=!1,f.pause.call(h,!1),c.startInterval.call(h)})},pause:function(a){var b=d(this).data("state");if(b){if(2>b.itemCount)return!1;(b.isPaused=a)?d(this).addClass("paused"):d(this).removeClass("paused")}},next:function(a){var b=d(this).data("state");if(b){if(b.animating||2>b.itemCount)return!1;c.restartInterval.call(this);c.moveUp(b,a)}},prev:function(a){var b=
d(this).data("state");if(b){if(b.animating||2>b.itemCount)return!1;c.restartInterval.call(this);c.moveDown(b,a)}},stop:function(){d(this).data("state")&&c.stopInterval.call(this)}};d.fn.vTicker=function(a){if(f[a])return f[a].apply(this,Array.prototype.slice.call(arguments,1));if("object"!==typeof a&&a)d.error("Method "+a+" does not exist on jQuery.vTicker");else return f.init.apply(this,arguments)}})(jQuery);
最佳答案
我是 vTicker 的作者。
我在 Webkit 中看到了相同的行为,如果这是一个 webkit 错误,它可能不会很快得到修复!
我的建议是向 vTicker 添加一些事件(在自动收报机动画之前和之后),然后使用 jQuery 设置所需的效果。
看看这个:
/*
Vertical News Ticker 1.15 (pre-release)
Original by: Tadas Juozapaitis ( kasp3rito [eta] gmail (dot) com )
http://www.jugbit.com/jquery-vticker-vertical-news-ticker/
Forked/Modified by: Richard Hollis @richhollis - richhollis.co.uk
*/
(function($){
var defaults = {
speed: 700,
pause: 4000,
showItems: 1,
mousePause: true,
height: 0,
animate: true,
margin: 0,
padding: 0,
startPaused: false
};
var internal = {
moveUp: function(state, attribs) {
internal.animate(state, attribs, 'up');
},
moveDown: function(state, attribs){
internal.animate(state, attribs, 'down');
},
animate: function(state, attribs, dir) {
var height = state.itemHeight;
var options = state.options;
var el = state.element;
var obj = el.children('ul');
var selector = (dir === 'up') ? 'li:first' : 'li:last';
state.element.trigger("vticker.beforeTick");
var clone = obj.children(selector).clone(true);
if(options.height > 0) height = obj.children('li:first').height();
height += (options.margin) + (options.padding*2); // adjust for margins & padding
if(dir==='down') obj.css('top', '-' + height + 'px').prepend(clone);
if(attribs && attribs.animate) {
if(state.animating) return;
state.animating = true;
var opts = (dir === 'up') ? {top: '-=' + height + 'px'} : {top: 0};
obj.animate(opts, options.speed, function() {
$(obj).children(selector).remove();
$(obj).css('top', '0px');
state.animating = false;
state.element.trigger("vticker.ticked");
});
} else {
obj.children(selector).remove();
obj.css('top', '0px');
state.element.trigger("vticker.ticked");
}
if(dir==='up') clone.appendTo(obj);
},
nextUsePause: function() {
var state = $(this).data('state');
var options = state.options;
if(state.isPaused || state.itemCount < 2) return;
methods.next.call( this, {animate:options.animate} );
},
startInterval: function() {
var state = $(this).data('state');
var options = state.options;
var initThis = this;
state.intervalId = setInterval(function(){
internal.nextUsePause.call( initThis );
}, options.pause);
},
stopInterval: function() {
var state = $(this).data('state');
if(!state) return;
if(state.intervalId) clearInterval(state.intervalId);
state.intervalId = undefined;
},
restartInterval: function() {
internal.stopInterval.call(this);
internal.startInterval.call(this);
}
};
var methods = {
init: function(options) {
// if init called second time then stop first, then re-init
methods.stop.call(this);
// init
var defaultsClone = jQuery.extend({}, defaults);
var options = $.extend(defaultsClone, options);
var el = $(this);
var state = {
itemCount: el.children('ul').children('li').length,
itemHeight: 0,
itemMargin: 0,
element: el,
animating: false,
options: options,
isPaused: (options.startPaused) ? true : false,
pausedByCode: false
};
$(this).data('state', state);
el.css({overflow: 'hidden', position: 'relative'})
.children('ul').css({position: 'absolute', margin: 0, padding: 0})
.children('li').css({margin: options.margin, padding: options.padding});
if(isNaN(options.height) || options.height === 0)
{
el.children('ul').children('li').each(function(){
var current = $(this);
if(current.height() > state.itemHeight)
state.itemHeight = current.height();
});
// set the same height on all child elements
el.children('ul').children('li').each(function(){
var current = $(this);
current.height(state.itemHeight);
});
// set element to total height
var box = (options.margin) + (options.padding * 2);
el.height(((state.itemHeight + box) * options.showItems) + options.margin);
}
else
{
// set the preferred height
el.height(options.height);
}
var initThis = this;
if(!options.startPaused) {
internal.startInterval.call( initThis );
}
if(options.mousePause)
{
el.bind("mouseenter", function () {
//if the automatic scroll is paused, don't change that.
if (state.isPaused === true) return;
state.pausedByCode = true;
// stop interval
internal.stopInterval.call( initThis );
methods.pause.call( initThis, true );
}).bind("mouseleave", function () {
//if the automatic scroll is paused, don't change that.
if (state.isPaused === true && !state.pausedByCode) return;
state.pausedByCode = false;
methods.pause.call(initThis, false);
// restart interval
internal.startInterval.call( initThis );
});
}
},
pause: function(pauseState) {
var state = $(this).data('state');
if(!state) return undefined;
if(state.itemCount < 2) return false;
state.isPaused = pauseState;
if(pauseState) $(this).addClass('paused');
else $(this).removeClass('paused');
},
next: function(attribs) {
var state = $(this).data('state');
if(!state) return undefined;
if(state.animating || state.itemCount < 2) return false;
internal.restartInterval.call( this );
internal.moveUp(state, attribs);
},
prev: function(attribs) {
var state = $(this).data('state');
if(!state) return undefined;
if(state.animating || state.itemCount < 2) return false;
internal.restartInterval.call( this );
internal.moveDown(state, attribs);
},
stop: function() {
var state = $(this).data('state');
if(!state) return undefined;
internal.stopInterval.call( this );
},
remove: function() {
var state = $(this).data('state');
if(!state) return undefined;
internal.stopInterval.call( this );
var el = state.element;
el.unbind();
el.remove();
}
};
$.fn.vTicker = function( method ) {
if ( methods[method] ) {
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.vTicker' );
}
};
})(jQuery);
jQuery(function() {
function setInitialOpacities() {
var ul = jQuery('#home-tick ul');
ul.children('li:nth-child(1)').css("opacity", .15);
ul.children('li:nth-child(2)').css("opacity", .15);
ul.children('li:nth-child(3)').css("opacity", .23);
ul.children('li:nth-child(4)').css("opacity", 1);
ul.children('li:nth-child(5)').css("opacity", .23);
ul.children('li:nth-child(6)').css("opacity", .15);
ul.children('li:nth-child(7)').css("opacity", .15);
}
jQuery('#home-tick').vTicker({showItems: 7});
setInitialOpacities();
jQuery('#home-tick').on('vticker.beforeTick', function() {
var ul = jQuery('#home-tick ul');
var interval = 500;
ul.children('li:nth-child(1)').animate({opacity: .15}, interval);
ul.children('li:nth-child(2)').animate({opacity: .15}, interval);
ul.children('li:nth-child(3)').animate({opacity: .23}, interval);
ul.children('li:nth-child(4)').animate({opacity: .23}, interval);
ul.children('li:nth-child(5)').animate({opacity: 1}, interval);
ul.children('li:nth-child(6)').animate({opacity: .23}, interval);
ul.children('li:nth-child(7)').animate({opacity: .15}, interval);
ul.children('li:nth-child(8)').css("opacity", .15);
});
jQuery('#home-tick').on('vticker.ticked', function() {
});
});
如果这能满足您的需求,请标记为答案,我会相应地更新 vTicker 版本。
理查德
关于jQuery vertical ticker 删除伪类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21669860/
我知道如何通过iPhone开发创建sqlite数据库、向其中插入数据、删除行等,但我试图以编程方式删除整个数据库本身,但没有得到任何帮助。请有人指导我如何通过代码从设备中删除/删除整个 sqlite
请帮助指导如何在 Teradata 中删除数据库。 当我运行命令DROP DATABASE database_name时,我收到错误消息: *** Failure 3552 Cannot DROP d
Azure 警报规则的删除命令似乎不起作用,尝试了下面的方法,它返回状态为无内容,并且警报未被删除 使用的命令Remove-AzAlertRule -ResourceGroup "RGName"-Na
我在 flex 搜索中为大约50000个视频建立了索引,但是当它达到52000左右时,所有数据都被删除。嗯,这对我来说真的很奇怪,我没有为ES设置任何Heap大小或最小或最大大小的内存大小,因此它们没
我正在处理的问题是表单错误“输入由字母、数字、下划线或连字符组成的有效‘slug’。” 以下是我的表单字段验证: def clean_slug(self): slug = self.c
阅读文档,我希望 $("#wrap2").remove(".error") 从 中删除所有 .error 元素#wrap2。然而看看这个 JSFiddle: http://jsfiddle.net/h
嗨,我第一次尝试发现 laravel 我从 laravel 4.2 开始,我刚刚创建了一个新项目,但我误以为我写了这样的命令行 composer create-project laravel/lara
我已经在网上搜索了很长一段时间,但我找不到如何完全删除 apache 2.4 。 使用: Windows 7 c:\apache24\ 我已经尝试了所有命令,但没有任何效果。 httpd -k shu
可能是一个简单的答案,所以提前道歉(最少的编码经验)。 我正在尝试从任何列中删除具有特定字符串(经济 7)的任何行,并且一直在尝试离开此线程: How to drop rows from pandas
有几种方法可以删除/移除 vector 中的项目。 我有一个指针 vector ,我需要在类的析构函数中删除所有指针。 什么是最有效/最快甚至最安全的方式? // 1º std::for_each(v
我安装了一个 VNC 服务器并在某处阅读了我必须安装 xinetd 的信息。稍后我决定删除 VNC 服务器,所以我也删除了 xinetd。似乎 xinetd 删除了一些与 plesk 相关的文件,如果
我制作了一个从我们的服务器下载视频的应用。问题是: 当我取消下载时,我打电话: myAsyncTask.cancel(true) 我注意到,myAsyncTask 并没有在调用取消时停止...我的 P
是否可以在使用DELETE_MODEL删除模型之前检查模型是否存在我试图避免在尝试删除尚未创建的模型时收到错误消息。基本上我正在寻找对应的: DROP TABLE IF EXISTS 但对于模型。 最
我已经有了这个代码: 但它仍然会生成一个表行条目。 我想做的是,当输入的数量为0时,表行将被删除。请耐心等待,因为我是 php 和 mySQL 编码新手。 最佳答案 您忘记执行查询。应该是 $que
在 SharePoint 中,如果您删除/修改重复日历条目的单次出现,则不会真正删除/修改任何内容 - 相反,会创建一个新条目,告诉 SP 对于特定日期,该事件不存在或具有新参数. 因此,这可以通过删
在 routes.php 中我有以下路由: Route::post('dropzone', ['as' => 'dropzone.upload', 'uses' => 'AdminPhotoContr
在我的应用程序中,我正在尝试删除产品。当我第一次删除产品时,它会成功并且 URL 更改为/remove_category/15。我正在渲染到同一页面。现在,当我尝试删除另一个产品时,网址更改为/rem
这个问题被问了很多次,但给出的答案都是 GNU sed 特定的。 sed -i '' "/${FIND}/,+2d""$FILE" 给出“预期的上下文地址”错误。 有人可以给我一个例子,说明如何使用
在使用 V3 API 时,我找不到任何方法来删除和清理 Google map 。 我已经在 AJAX 站点中运行它,所以我想完全关闭它而无需重新加载页面。 我希望有一个 .unload() 或 .de
是否可以创建一个 Azure SQL 数据库用户来执行以下操作: 针对所有表和 View 进行 SELECT 创建/更改/删除 View 但用户不应该不拥有以下权限: 针对任何表或 View 插入/更
我是一名优秀的程序员,十分优秀!