Pam*_*orp 4 css twitter jquery css3
我目前有几个Ruby on Rails应用程序,我通过媒体查询使用响应式网页设计.我使用以下CSS代码将宽度覆盖到100%.
#twitter-widget-0, #twitter-widget-1 {
float: none;
width: 100% !important;
font-size: 12px;
}
Run Code Online (Sandbox Code Playgroud)
但是我在2015年7月注意到Twitter小部件不再以100%显示,而是以固定大小显示.我检查了Twitter的开发者网站,发现Twitter小部件的定制已经扩展.当我检查小部件时,我看到我在CSS中的CSS参数,但我也看到宽度设置为520px.
https://dev.twitter.com/web/embedded-timelines
看看这个链接,我知道我可以在代码中使用固定宽度编码参数.不知道任何人可能用来显示我的Web应用程序的屏幕大小我不愿意在任何地方设置固定大小.另一个问题是我的媒体查询不会改变它.
我找到的关于自定义当前Twitter小部件的唯一链接是下面的链接.其中大部分来自2011 - 2013年.
有人在Wordpress中使用Twitter小部件询问了这个问题.解决方案使用jQuery.我在Javascript中不够擅长实现Javascript或jQuery解决方案,所以我不知道它是否适用于我.
2015年7月16日更新1100 GMT-5
我决定今天早上再做一次搜索,发现这个链接有三个最近的jQuery解决方案,人们说他们开始工作了.
我添加了以下行application.html.erb来更正$的ReferenceError.我虽然jquery-rails gem会识别我的代码.
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
我创造了一个小提琴.当我点击JSHint时,它说我的代码完全有效.窗口小部件的宽度为552px.我不确定问题是否在于我有代码的地方.我需要帮助来确定为什么我的jQuery代码没有实现我的目标.
当我检查Twitter小部件时,这是iframe语句:
<iframe id="twitter-widget-0" scrolling="no" frameborder="0" allowtransparency="true" class="twitter-timeline twitter-timeline-rendered" allowfullscreen="" style="border: none; max-width: 100%; min-width: 180px; margin: 0px; padding: 0px; display: inline-block; position: static; visibility: visible; width: 520px;" title="Twitter Timeline" height="400">
.......widget statements.............
</iframe>
Run Code Online (Sandbox Code Playgroud)
基于克里斯的答案.这有一个间隔,用于检查iframe是否可用于操作.如果是这样,它会触发代码,然后清除间隔.
如果您有多个Twitter Feed,请使用以下命令:
$(document).ready(function() {
twitterCheck = setInterval(function() {
if($('iframe[id^="twitter-widget-"]').length) {
$('iframe[id^="twitter-widget-"]').each(function () {
$(this).contents().find(".timeline").attr("style","max-width:100% !important;");
$(this).attr("style","max-width:100% !important; width: 100% !important;");
});
clearInterval(twitterCheck);
}
}, 1000);
});
Run Code Online (Sandbox Code Playgroud)
JSFiddle:http://jsfiddle.net/v7xom6ms/20/
或者,如果你有一个,你可以放弃.each()并使用它:
$(document).ready(function() {
twitterCheck = setInterval(function() {
var twitterFrame = $("#twitter-widget-0");
if(twitterFrame.length) {
twitterFrame.contents().find(".timeline").attr("style","max-width:100% !important;");
twitterFrame.attr("style","max-width:100% !important; width: 100% !important;");
clearInterval(twitterCheck);
}
}, 1000);
});
Run Code Online (Sandbox Code Playgroud)
JSFiddle:http://jsfiddle.net/v7xom6ms/21/
编辑:有人可能会争辩说上面的代码也很容易失败,因为加载了iframe但你无法确认加载的内容.轻松修复.这也允许我们降低不太明显的调整大小过渡的间隔.
$(document).ready(function() {
twitterCheck = setInterval(function() {
var twitterFrame = $("#twitter-widget-0");
var twitterTimeline = twitterFrame.contents().find(".timeline");
if(twitterFrame.length && twitterTimeline.length) {
twitterTimeline.attr("style","max-width:100% !important;");
twitterFrame.attr("style","max-width:100% !important; width: 100% !important;");
clearInterval(twitterCheck);
}
}, 10);
});
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/v7xom6ms/22/
| 归档时间: |
|
| 查看次数: |
2664 次 |
| 最近记录: |