I'm trying to customise the new Twitter widget, but having some problems with the CSS and can't seem to override theirs on this new one. I've tried searching for solutions but can't find any that match.
Here's my page with the widget in the right-nav and the tweaked CSS for the .timeline class:
.timeline {
margin-bottom:0;
border:0 !important;
border-radius:0 !important;
-webkit-border-radius:0;
-moz-border-radius:0;
}
html:
<div class="bg">
<h3 class="twitter">Twitter News</h3>
<div id="twitter">
<a class="twitter-timeline" href="https://twitter.com/" data-widget-id="268336500536647680">Tweets by </a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</div></div>
I've started using !important declarations and tried the main #twitter id to override, but neither works.
Any ideas much appreciated.
**I apparently need to edit the iframe somehow, but not sure how - if anyone has a clearer idea how I can do that with my code (as opposed to a tutorial) that would be great. I also need to change the iframe width..
I managed to do this with javascript (I use jQuery in my application!). You have to apply the styles after the iframe load (I did not find a valid "loaded" event, so I use a polling strategy).
// Customize twitter feed
var hideTwitterAttempts = 0;
function hideTwitterBoxElements() {
setTimeout( function() {
if ( $('[id*=twitter]').length ) {
$('[id*=twitter]').each( function(){
if ( $(this).width() == 220 ) {
$(this).width( 198 ); //override min-width of 220px
}
var ibody = $(this).contents().find( 'body' );
ibody.width( $(this).width() + 20 ); //remove scrollbar by adding width
if ( ibody.find( '.timeline .stream .h-feed li.tweet' ).length ) {
ibody.find( '.timeline' ).css( 'border', 0 );
ibody.find( '.timeline .stream' ).css( 'overflow-x', 'hidden' );
ibody.find( '.timeline .stream' ).css( 'overflow-y', 'scroll' );
ibody.find( '.timeline-header').hide();
ibody.find( '.timeline-footer').hide();
}
else {
$(this).hide();
}
});
}
hideTwitterAttempts++;
if ( hideTwitterAttempts < 3 ) {
hideTwitterBoxElements();
}
}, 1500);
}
// somewhere in your code after html page load
hideTwitterBoxElements();
This is without jQuery for anyone interested.
UPDATED with much better solution that doesn't rely on polling and therefore doesn't have a flash of unstyled layout on occasion:
twttr.events.bind('rendered',function(){
[].slice.call(document.querySelectorAll('iframe.twitter-timeline')).forEach(function(e,i,a){
var fE = e.contentDocument.getElementsByClassName('timeline-footer');
if(fE.length){
fE[0].style.backgroundColor='transparent';
}
});
});
old version:
// Customize twitter feed
var hideTwitterAttempts = 0;
function hideTwitterBoxElements() {
setTimeout( function() {
var list = document.getElementsByTagName('iframe');
if (list.length ) {
Array.prototype.forEach.call(
list,
function(element){
var footerE = element.contentDocument.getElementsByClassName('timeline-footer')[0];
footerE.style.backgroundColor="transparent";
});
}
hideTwitterAttempts++;
if ( hideTwitterAttempts < 3 ) {
hideTwitterBoxElements();
}
}, 1500);
}
hideTwitterBoxElements();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With