Hot Post

CSS Responsive Iris Slider cho Blogger


CSS Responsive Iris Slider for Blogger

Hãy cùng Iris Tips tạo Side trình chiếu với hiệu ứng đẹp mắt cho Website của bạn.

CSS

1Bạn vào Mẫu >> Chỉnh sửa HTML và thêm đoạn CSS dưới đây vào trước thẻ ]]></b:skin>
#slideriris-tophome{float:left;width:100%;height:auto;margin-bottom:5px;overflow:hidden;}
#paginate-slider4 a img{width:137px;height:50px;border:4px solid #444}
#paginate-slider4 a img:hover,#paginate-slider4 a.selected img{border:4px solid #e74c3c}
.sliderwrapper{position:relative;overflow:hidden;width:100%;height:250px}
#slider4 img{float:left;width:100%;height:250px;overflow:hidden}
#paginate-slider4{background:#333;float:left;width:100%;height:71px;overflow:hidden;padding-top:3px;padding-left:3px}
#paginate-slider4 a{float:left;width:140px;padding:5px;overflow:hidden;margin-right:3px}
.pagination{width:100%;background-color:#ffffff;padding:0 5px}
.pagination a{padding:0 5px;text-decoration:none;color:#181818;background:#ffffff}
.pagination a:hover,.pagination a.selected{color:#181818;background-color:#ffffff}

Javascript

2 Thêm đoạn script sau vào trước thẻ </body>
<script type='text/javascript'>
//<![CDATA[
var featuredcontentslider={
//3 variables below you can customize if desired:
ajaxloadingmsg: '<div style="margin: 20px 0 0 20px"><img src="loading.gif" /> Fetching slider Contents. Please wait...</div>',
bustajaxcache: true, //bust caching of external ajax page after 1st request?
enablepersist: true, //persist to last content viewed when returning to page?

settingcaches: {}, //object to cache "setting" object of each script instance

jumpTo:function(fcsid, pagenumber){ //public function to go to a slide manually.
this.turnpage(this.settingcaches[fcsid], pagenumber)
},

ajaxconnect:function(setting){
var page_request = false
if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else if (window.XMLHttpRequest) // if Mozilla, Safari etc
page_request = new XMLHttpRequest()
else
return false
var pageurl=setting.contentsource[1]
page_request.onreadystatechange=function(){
featuredcontentslider.ajaxpopulate(page_request, setting)
}
document.getElementById(setting.id).innerHTML=this.ajaxloadingmsg
var bustcache=(!this.bustajaxcache)? "" : (pageurl.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
page_request.open('GET', pageurl+bustcache, true)
page_request.send(null)
},

ajaxpopulate:function(page_request, setting){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
document.getElementById(setting.id).innerHTML=page_request.responseText
this.buildpaginate(setting)
}
},

buildcontentdivs:function(setting){
var alldivs=document.getElementById(setting.id).getElementsByTagName("div")
for (var i=0; i<alldivs.length; i++){
if (this.css(alldivs[i], "contentdiv", "check")){ //check for DIVs with class "contentdiv"
setting.contentdivs.push(alldivs[i])
alldivs[i].style.display="none" //collapse all content DIVs to begin with
}
}
},

buildpaginate:function(setting){
this.buildcontentdivs(setting)
var sliderdiv=document.getElementById(setting.id)
var pdiv=document.getElementById("paginate-"+setting.id)
var phtml=""
var toc=setting.toc
var nextprev=setting.nextprev
if (typeof toc=="string" && toc!="markup" || typeof toc=="object"){
for (var i=1; i<=setting.contentdivs.length; i++){
phtml+='<a href="#'+i+'" class="toc">'+(typeof toc=="string"? toc.replace(/#increment/, i) : toc[i-1])+'</a> '
}
phtml=(nextprev[0]!=''? '<a href="#prev" class="prev">'+nextprev[0]+'</a> ' : '') + phtml + (nextprev[1]!=''? '<a href="#next" class="next">'+nextprev[1]+'</a>' : '')
pdiv.innerHTML=phtml
}
var pdivlinks=pdiv.getElementsByTagName("a")
var toclinkscount=0 //var to keep track of actual # of toc links
for (var i=0; i<pdivlinks.length; i++){
if (this.css(pdivlinks[i], "toc", "check")){
if (toclinkscount>setting.contentdivs.length-1){ //if this toc link is out of range (user defined more toc links then there are contents)
pdivlinks[i].style.display="none" //hide this toc link
continue
}
pdivlinks[i].setAttribute("rel", ++toclinkscount) //store page number inside toc link
pdivlinks[i][setting.revealtype]=function(){
featuredcontentslider.turnpage(setting, this.getAttribute("rel"))
return false
}
setting.toclinks.push(pdivlinks[i])
}
else if (this.css(pdivlinks[i], "prev", "check") || this.css(pdivlinks[i], "next", "check")){ //check for links with class "prev" or "next"
pdivlinks[i].onclick=function(){
featuredcontentslider.turnpage(setting, this.className)
return false
}
}
}
this.turnpage(setting, setting.currentpage, true)
if (setting.autorotate[0]){ //if auto rotate enabled
pdiv[setting.revealtype]=function(){
featuredcontentslider.cleartimer(setting, window["fcsautorun"+setting.id])
}
sliderdiv["onclick"]=function(){ //stop content slider when slides themselves are clicked on
featuredcontentslider.cleartimer(setting, window["fcsautorun"+setting.id])
}
setting.autorotate[1]=setting.autorotate[1]+(1/setting.enablefade[1]*50) //add time to run fade animation (roughly) to delay between rotation
this.autorotate(setting)
}
},

urlparamselect:function(fcsid){
var result=window.location.search.match(new RegExp(fcsid+"=(\\d+)", "i")) //check for "?featuredcontentsliderid=2" in URL
return (result==null)? null : parseInt(RegExp.$1) //returns null or index, where index (int) is the selected tab's index
},

turnpage:function(setting, thepage, autocall){
var currentpage=setting.currentpage //current page # before change
var totalpages=setting.contentdivs.length
var turntopage=(/prev/i.test(thepage))? currentpage-1 : (/next/i.test(thepage))? currentpage+1 : parseInt(thepage)
turntopage=(turntopage<1)? totalpages : (turntopage>totalpages)? 1 : turntopage //test for out of bound and adjust
if (turntopage==setting.currentpage && typeof autocall=="undefined") //if a pagination link is clicked on repeatedly
return
setting.currentpage=turntopage
setting.contentdivs[turntopage-1].style.zIndex=++setting.topzindex
this.cleartimer(setting, window["fcsfade"+setting.id])
setting.cacheprevpage=setting.prevpage
if (setting.enablefade[0]==true){
setting.curopacity=0
this.fadeup(setting)
}
if (setting.enablefade[0]==false){ //if fade is disabled, fire onChange event immediately (verus after fade is complete)
setting.contentdivs[setting.prevpage-1].style.display="none" //collapse last content div shown (it was set to "block")
setting.onChange(setting.prevpage, setting.currentpage)
}
setting.contentdivs[turntopage-1].style.visibility="visible"
setting.contentdivs[turntopage-1].style.display="block"
if (setting.prevpage<=setting.toclinks.length) //make sure pagination link exists (may not if manually defined via "markup", and user omitted)
this.css(setting.toclinks[setting.prevpage-1], "selected", "remove")
if (turntopage<=setting.toclinks.length) //make sure pagination link exists (may not if manually defined via "markup", and user omitted)
this.css(setting.toclinks[turntopage-1], "selected", "add")
setting.prevpage=turntopage
if (this.enablepersist)
this.setCookie("fcspersist"+setting.id, turntopage)
},

setopacity:function(setting, value){ //Sets the opacity of targetobject based on the passed in value setting (0 to 1 and in between)
var targetobject=setting.contentdivs[setting.currentpage-1]
if (targetobject.filters && targetobject.filters[0]){ //IE syntax
if (typeof targetobject.filters[0].opacity=="number") //IE6
targetobject.filters[0].opacity=value*100
else //IE 5.5
targetobject.style.filter="alpha(opacity="+value*100+")"
}
else if (typeof targetobject.style.MozOpacity!="undefined") //Old Mozilla syntax
targetobject.style.MozOpacity=value
else if (typeof targetobject.style.opacity!="undefined") //Standard opacity syntax
targetobject.style.opacity=value
setting.curopacity=value
},

fadeup:function(setting){
if (setting.curopacity<1){
this.setopacity(setting, setting.curopacity+setting.enablefade[1])
window["fcsfade"+setting.id]=setTimeout(function(){featuredcontentslider.fadeup(setting)}, 50)
}
else{ //when fade is complete
if (setting.cacheprevpage!=setting.currentpage) //if previous content isn't the same as the current shown div (happens the first time the page loads/ script is run)
setting.contentdivs[setting.cacheprevpage-1].style.display="none" //collapse last content div shown (it was set to "block")
setting.onChange(setting.cacheprevpage, setting.currentpage)
}
},

cleartimer:function(setting, timervar){
if (typeof timervar!="undefined"){
clearTimeout(timervar)
clearInterval(timervar)
if (setting.cacheprevpage!=setting.currentpage){ //if previous content isn't the same as the current shown div
setting.contentdivs[setting.cacheprevpage-1].style.display="none"
}
}
},

css:function(el, targetclass, action){
var needle=new RegExp("(^|\\s+)"+targetclass+"($|\\s+)", "ig")
if (action=="check")
return needle.test(el.className)
else if (action=="remove")
el.className=el.className.replace(needle, "")
else if (action=="add")
el.className+=" "+targetclass
},

autorotate:function(setting){
window["fcsautorun"+setting.id]=setInterval(function(){featuredcontentslider.turnpage(setting, "next")}, setting.autorotate[1])
},

getCookie:function(Name){
var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
if (document.cookie.match(re)) //if cookie found
return document.cookie.match(re)[0].split("=")[1] //return its value
return null
},

setCookie:function(name, value){
document.cookie = name+"="+value
},

init:function(setting){
var persistedpage=this.getCookie("fcspersist"+setting.id) || 1
var urlselectedpage=this.urlparamselect(setting.id) //returns null or index from: mypage.htm?featuredcontentsliderid=index
this.settingcaches[setting.id]=setting //cache "setting" object
setting.contentdivs=[]
setting.toclinks=[]
setting.topzindex=0
setting.currentpage=urlselectedpage || ((this.enablepersist)? persistedpage : 1)
setting.prevpage=setting.currentpage
setting.revealtype="on"+(setting.revealtype || "click")
setting.curopacity=0
setting.onChange=setting.onChange || function(){}
if (setting.contentsource[0]=="inline")
this.buildpaginate(setting)
if (setting.contentsource[0]=="ajax")
this.ajaxconnect(setting)
}
}

featuredcontentslider.init({
id: "slider4", //id of main slider DIV
contentsource: ["inline", ""], //Valid values: ["inline", ""] or ["ajax", "path_to_file"]
toc: "markup", //Valid values: "#increment", "markup", ["label1", "label2", etc]
nextprev: ["", "Next"], //labels for "prev" and "next" links. Set to "" to hide.
revealtype: "mouseover", //Behavior of pagination links to reveal the slides: "click" or "mouseover"
enablefade: [true, 0.1], //[true/false, fadedegree]
autorotate: [true, 5000], //[true/false, pausetime]
onChange: function(previndex, curindex){ //event handler fired whenever script changes slide
//previndex holds index of last slide viewed b4 current (1=1st slide, 2nd=2nd etc)
//curindex holds index of currently shown slide (1=1st slide, 2nd=2nd etc)
}
})
//]]>
</script>

jQuery

3 Thêm thư viện jQuery dưới đây vào trước thẻ </head>nếu như website của bạn chưa có.
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js' type='text/javascript'></script>

HTML

4Cuối cùng vào Bố cục >> Thêm tiện ích HTML/Javascript và dán đoạn code bên dưới vào
<div id='slideriris-tophome'>
<div class='sliderwrapper' id='slider4'>
<div class='contentdiv'>
<a href='http://iris-tips.blogspot.com/search/label/Template?max-results=6'>
<img alt='Thiết kế Web theo yêu cầu' src='http://3.bp.blogspot.com/-KMabEcsAkyg/VbYO9LTFOOI/AAAAAAAACNU/LzWZtDBPTJ8/s1600/slide-1.jpg'/></a>
</div>
<div class='contentdiv'>
 <a href='http://iris-tips.blogspot.com/search/label/Template?max-results=6'>
<img alt='Thiết kế Web chuyen nghiep' src='http://1.bp.blogspot.com/-qb3bzFTW804/VbYO-JGMVzI/AAAAAAAACNc/mMOv9al5xW0/s1600/slide-2.png'/></a>
</div>
<div class='contentdiv'>
 <a href='http://iris-tips.blogspot.com/search/label/Template?max-results=6'>
<img alt='Kho giao diện Template Blogspot chuyên nghiệp' src='http://3.bp.blogspot.com/-l_sQmoKV10M/VbYPFD0l9aI/AAAAAAAACNs/rJl8gqnfJ6A/s1600/slide-3.jpg'/></a>
</div>
<div class='contentdiv'>
 <a href='http://iris-tips.blogspot.com/search/label/Template?max-results=6'>
<img alt='Thiết kế Blogspot chuyên nghiệp' src='http://3.bp.blogspot.com/-Z7m4sPf-e8w/VbYO-Yx2CQI/AAAAAAAACNg/lLaJ4Q9qxW8/s1600/slide-4.jpg'/></a>
</div>
</div>
<div id='paginate-slider4'>
<a class='toc' href='#'><img alt='Kho giao diện Template Blogspot chuyên nghiệp' src='http://3.bp.blogspot.com/-KMabEcsAkyg/VbYO9LTFOOI/AAAAAAAACNU/LzWZtDBPTJ8/s1600/slide-1.jpg'/></a>
<a class='toc' href='#'>
<img alt='Thiết kế Web chuyen nghiep' src='http://1.bp.blogspot.com/-qb3bzFTW804/VbYO-JGMVzI/AAAAAAAACNc/mMOv9al5xW0/s1600/slide-2.png'/></a>
<a class='toc' href='#'>
<img alt='Kho giao diện Template Blogspot chuyên nghiệp' src='http://3.bp.blogspot.com/-l_sQmoKV10M/VbYPFD0l9aI/AAAAAAAACNs/rJl8gqnfJ6A/s1600/slide-3.jpg'/></a>
<a class='toc' href='#'>
<img alt='Thiết kế Blogspot chuyên nghiệp' src='http://3.bp.blogspot.com/-Z7m4sPf-e8w/VbYO-Yx2CQI/AAAAAAAACNg/lLaJ4Q9qxW8/s1600/slide-4.jpg'/></a>
</div>


Nếu có bất kỳ vấn đề khó khăn hay câu hỏi gì, bạn đừng ngần ngại, hãy để lại bình luận ở form bên dưới nhé.
Chúc bạn thành công!

Created by Iris Tips
Đăng ký nhận tin khuyến mãi, thủ thuật mới

Mẹo nhỏ khi bình luận
  • - Để viết chữ in đậm hãy sử dụng thẻ <b>chữ in đậm</b>
  • - Để viết chữ in nghiêng hãy sử dụng thẻ <i>chữ in nghiêng</i>
  • - Để viết code hãy sử dụng công cụ Conversion ở bên dưới để mã hóa và sau đó dán vào khung bình luận.
  • - Để chèn hình ảnh, video chỉ cần dán link trực tiếp của hình ảnh hoặc video vào khung bình luận (hỗ trợ: jpg, gif, png, bmp, Youtube).
  • - Bạn có thể upload hình ảnh, tập tin trực tiếp từ máy tính bằng cách sử dụng công cụ Up ảnh hoặc Up file ở bên dưới.
  • - Bạn có thể check vào ô Notify me ở khung nhận xét để nhận thông báo qua email khi ai đó trả lời bình luận của bạn.

8 Comments

  1. Mình có rất nhiều ảnh cái mình muốn là khi rê chuột vào nó hiện nút mũi tên để next tới hay lui lại các hình ảnh trước đó thì sao bạn

    Trả lờiXóa
    Trả lời
    1. Cái đó là slider kiểu khác bạn, để mình xem lại có gì sẽ đăng bài hướng dẫn bạn.

      Xóa
    2. Thank you bạn nhé mình có tham khảo cái Nivo Slider nhưng mình rất dỡ code nên chỉnh khá là tù.Hôm bữa mình cũng thấy kiểu slider này nhưng nó có nút next và quay lại khá hay bạn à để mình xem lại code xem.

      Xóa
    3. Bạn có thể đưa mình link để tham khảo không chứ đa số mình thấy slider kiểu này không có nút Next mà.

      Còn một kiểu slider nữa bạn có thể tham khảo thêm:
      http://iris-tips.blogspot.com/2015/04/content-slider-bang-css3-cho.html

      Nếu thích nút Next thì vài hôm nữa mình sẽ share một kiểu Slider khác, tự nhận hình ảnh bài viết luôn, khỏi phải mắc công thêm thủ công :)

      Xóa
  2. Thank you bạn nhé bạn nói đúng kiểu này thì đa phần không có nút next và quay lại vì thật ra nó nằm phần ô vuông phía dưới chính là phần chuyển đổi hình ảnh nhưng vì mình làm quá nhiều hình ảnh như trang mình xin lỗi không phải spam link nhé

    http://www.bacvietsteel.vn

    Trang này mình code lại và dùng code này.Code này trước mình có tham khảo của bạn Minh Tuấn và sau này Mạnh Hồng có share. Như bạn thất đó trang mình rất nhiều hình ảnh vì làm dạng công ty.
    Như trang này : http://saigonposter-hd.blogspot.com bạn thấy nó dùng Nivo Slider

    Trả lờiXóa
    Trả lời
    1. Cái đó hình như dùng SKD Slider mà bạn, bạn có thể vào link dưới download code gốc hoặc dùng code bên saigonposter cũng được
      http://dandywebsolution.com/skdslider/

      Xóa
    2. Oh Sorry bạn đó đúng là skdslider ok trang bạn đưa mình đã có tham khảo rồi tại do mình lười thay code nhưng dù sao mình vẫn thích code của bài bạn đang hơn và hiện tại vẫn đang dùng.
      Bạn thấy code này
      http://hocaothutcunghito.blogspot.com/2011/09/tao-slide-show-cho-hinh-anh-voi-cac-anh.html nó có thêm 2 nút lới lui phía dưới mình đang nghiên cứu dù sao cũng thanks bạn nhé.

      Xóa
    3. Demo bạn một code slider khác nè, có nút next đúng ý bạn luôn đó. Slider này sẽ tự động lấy ảnh và tiêu đề bài viết không cần phải thêm thủ công nữa. Bạn thích thì 15h ngày mai quay lại xem hướng dẫn nhé. :D
      http://iris-tips.blogspot.com/p/demo.html?url=http://s.codepen.io/IrisTips/fullpage/jbgZKg&download=http://iris-tips.blogspot.com/

      Xóa

Đăng nhập bằng Google


Cùng tham gia bình luận bài viết này nhé!