使用Lightbox制作照片條

前言:這是國外的一個教程,我也很喜歡這個網頁里面的教程,主要技術是CSS3和JQuery以及一些JQuery的插件的應用,當然從這些教程我也學到了他們制作時的一些思路,就好像做數學題那樣,只要思路把握了,就可以做出千變萬化的題目。

教程地址:http://tympanus.net/codrops/2012/08/01/photo-booth-strips-with-lightbox/

demo地址:http://tympanus.net/Tutorials/PhotoBoothStripsLightbox/

作品的截圖:

作品的亮點:1. 當鼠標hover圖片的時候,圖片變得明亮和清晰。

???????????????? 2. 當鼠標在圖片上,滾動滑輪的時候,圖片列表也跟著滾動。

???????????????? 3. 當鼠標點擊圖片的時候,彈出該圖片的大圖,而且左右箭頭實現該組的圖片輪流展示。

?

實現的思路:1. hover的時候把透明度設置為1。

???????????????? 2. 之所以可以滾動是因為該層允許了出現滾動條,但是父層設置了overflow:hidden,所以把滾動條的位置擠到父層的寬度外,這樣滾動條就可以不見了。

???????????????? 3. 主要使用了Lightbox的插件。進入Lightbox的官網可以看到他的用法,因為它是開源的,github上面有它的源代碼,有空可以仔細看一下了解它的實現思路。

?

主要代碼:

1. 首先是HTML部分,每一組照片使用一個DIV而且class為"pb-wrapper"來括住,由于使用到Lightbox,它需要在a標簽里面增加rel="lightbox[組名]"的屬性,鏈接地址為大圖的位置。

<div class="pb-wrapper pb-wrapper-1">   <!--一組圖片 該層也用于隱藏滾輪的--><div class="pb-scroll">             <!--該層主要用來設置滾輪 --><ul class="pb-strip">           <!--照片的列表 --><li><a href="images/large/1.jpg" rel="lightbox[album1]" title="Spring">    <!-- 組名為album1 --><img src="images/small/1.jpg" /></a></li><li><a href="images/large/2.jpg" rel="lightbox[album1]" title="Sunshine"><img src="images/small/2.jpg" /></a></li><li> <!--...--> </li><!--...--></ul></div><h3 class="pb-title">Pure Serenity</h3></div>

?"pb-wrapper"作為每一組照片公有的屬性,而細微差別需要區分的再加上"pb-wrapper-n",n表示第幾個。這里的差別主要是位置,高度還有旋轉角度。

2.接下來是CSS部分

照片列是固定位置的,這樣可以幫助我們定義相對于瀏覽器大小的高度,加上一些陰影還有一些背景,顯得更好看一點。padding-bottom的大值為了預留位置給圖片列的內容介紹。就是上面h3的那部分。

.pb-wrapper {position: fixed;background: #fff url(../images/paper.jpg) repeat center bottom;width: 170px;margin-top: 10px;padding: 20px 10px 100px;overflow: hidden;box-shadow:inset 1px 0 0 3px rgba(255,255,255,0.6),0 1px 4px rgba(0,0,0,0.3),inset 0 0 20px rgba(0,0,0,0.05),inset 0 -25px 40px rgba(0,0,0,0.08);
}

使用偽類:after來放置一個圓圈來提示用戶可以在上面使用滑輪滾動來使得圖片滾動,再使用:before偽類在左邊加多一些陰影。

.pb-wrapper:before {content: '';position: absolute;width: 2px;left: 0;top: 3px;bottom: 3px;box-shadow: 0 0 10px rgba(0,0,0,0.2);
}.pb-wrapper:after{position: absolute;content: '';background: rgba(192,227,232, 0.8) url(../images/scroll.png) no-repeat center center;width: 80px;height: 80px;top: 50%;left: 50%;margin: -75px 0 0 -35px;border-radius: 50%;z-index: 1000;
}

接著是標題h3的屬性,這段文字設置不能被用戶選擇復制。

h3.pb-title {padding: 5px;font-family: 'Pacifico', Cambria, Georgia, serif;color: #374571;font-size: 14px;font-weight: 300;margin: 0;user-select: none;
}

帶有class為"pb-scroll"的那一層,增加一個額外的padding用來把滾動條擠出到父層不顯示的區域那里。

.pb-scroll {position: relative;height: 100%;width: 150px;padding-right: 30px;overflow-y: scroll;overflow-x: hidden;box-sizing: content-box;
}

但我們把鼠標移到圖片列表上有一個明顯的hover效果,主要是透明度的改變。

ul.pb-strip {padding: 0;list-style: none;position: relative;margin: 0 auto;width: inherit;opacity: 0.8;transition: all 0.3s ease-in-out;
}
.pb-wrapper:hover ul.pb-strip{opacity: 1;
}

接著是照片的微調

ul.pb-strip li {display: block;width: 150px;position: relative;margin-bottom: 7px;
}
ul.pb-strip li a {display: block;
}

每個a標簽都設置了title屬性,我們想把title的值顯示到照片上來表明該照片的題目,這里使用了偽類:after,在content里面獲取attr(title)的值

ul.pb-strip li a:after {position: absolute;z-index: 999;height: 20px;width: 120px;left: 10px;padding: 5px;bottom: 10px;background: rgba(255,255,255,0.6);content: attr(title);font-size: 13px;text-shadow: 0 1px 1px rgba(255,255,255,0.9);box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
}

在img上加上box-shadow為了讓我們在整個照片列旋轉的時候照片的鋸齒不要太明顯。

ul.pb-strip li img {display: block;box-shadow: 0 0 1px 1px #fff;
}

給每個照片組加上它們的位置,高度和旋轉值

.pb-wrapper-1 {height: 89%;left: 20%;transform: rotate(3deg);
}.pb-wrapper-2 {height: 85%;left: 40%;transform: rotate(-2deg);
}.pb-wrapper-3 {height: 95%;left: 60%;transform: rotate(1deg);
}.pb-wrapper-4 {height: 75%;left: 80%;
}

3. 最后是lightbox.css的調整,主要是左右的箭頭不要出現在圖片上,出現在圖片外面,確保圖片的位置正確,還有箭頭不要hover的時候才出現,還有一些文字的調整,還有這些的基礎是要知道lightbox.js加了一些什么層在html文檔時以及對于的ID和class。

#lightbox {font-family: inherit;padding: 0 85px;
}
.lb-outerContainer {overflow: visible !important;background: #fff url(../images/paper.jpg) fixed repeat top left;border-radius: 0px;max-width: 100%;height: auto !important;
}
.lb-container {padding: 0;
}#lightbox img.lb-image {padding: 10px;max-width: 100%;
}
.lb-nav {box-sizing: content-box;padding: 0 80px;left: -80px;
}
.lb-dataContainer {position: relative;max-width: 100%;
}.lb-data .lb-close {bottom: 10px;position: absolute;width: 73px;height: 73px;right: 5px;
}
.lb-prev, .lb-next {position: absolute;cursor: pointer;width: 60px;height: 60px;top: 50%;margin-top: -30px;
}
.lb-prev,
.lb-prev:hover{background: url(../images/prev.png) no-repeat 50% 50%;
}
.lb-next,
.lb-next:hover{background: url(../images/next.png) no-repeat 50% 50%;
}
.lb-data .lb-caption {font-family: 'Pacifico', Cambria, Georgia, serif;font-weight: 300;font-size: 30px;color: #fff;line-height: 32px;text-shadow: 1px 1px 1px rgba(0,0,0,0.6);
}.lb-data .lb-number {text-indent: 4px;color: #c0e3e8;
}

總結:其實這個作品給我覺得很好的地方就是鼠標滾動,圖片相應滾動,可能是我沒有仔細思考過吧,如果是我做的話,我第一時間想到是使用JS改變它的position來實現,但是沒想到還有更好的方法。接下來就是想做一定的創新,但是現在還沒想到更好方式。

轉載于:https://www.cnblogs.com/zhuyingyan/archive/2012/08/04/2622675.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260542.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260542.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260542.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS- 如何改變section header

希望這個從UITableViewDelegate協議里得到的方法可以對你有所幫助&#xff1a; - (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {UIView *headerView [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.…

第6章 Python 數字圖像處理(DIP) - 彩色圖像處理2 - 灰度分層(灰度分割)和彩色編碼,灰度值到彩色變換,Gray to RGB

第6章主要講的是彩色圖像處理&#xff0c;一些彩色模型如RGB&#xff0c;CMK&#xff0c;CMYK&#xff0c;HSI等色彩模型&#xff1b;彩色模型的變換關系&#xff1b;還包含由灰度圖像怎樣處理成假彩色圖像&#xff1b;使用彩色分割圖像等。本章比較少理論還有變換的描述&#…

值重新賦值_JavaScript-賦值運算符

好好學習&#xff0c;天天向上賦值運算符賦值運算符必須有變量參與運算&#xff0c;賦值運算符會做兩件事情第一&#xff0c;將變量中原始值參與對應數學運算&#xff0c;與右側的數據第二&#xff0c;將運算結果再重新賦值給變量變量位于操作符的左側賦值運算符符號&#xff1…

超聲換能器的原理及設計_超聲波發生器、變幅桿、焊頭的匹配介紹

一.超聲波換能器原理與設計(超聲波振動系統)匹配摘要&#xff1a;就塑料焊接機的超聲波換能器系統進行設計和計算&#xff0c;并用PRO- E 三維軟件繪出三維模型&#xff0c;最后進行頻率分析&#xff0c;為超聲波換能系統提供了有用的設計方法。關鍵詞&#xff1a;超聲波換能器…

位圖法

判斷集合中存在重復是常見編程任務之一&#xff0c;當集合中數據量比較大時我們通常希望少進行幾次掃描&#xff0c;這時雙重循環法就不可取了。位圖法比較適合于這種情況&#xff0c;它的做法是按照集合中最大元素max創建一個長度為max1的新數組&#xff0c;然后再次掃描原數組…

CentOS查看和修改PATH環境變量的方法

為什么80%的碼農都做不了架構師&#xff1f;>>> 查看PATH&#xff1a;echo $PATH 以添加mongodb server為列 修改方法一&#xff1a; export PATH/usr/local/mongodb/bin:$PATH //配置完后可以通過echo $PATH查看配置結果。 生效方法&#xff1a;立即生效 有效期限…

IOS簡單的登陸界面

主要需要注意的幾個問題&#xff1a; 1.導入圖片方式最好用文件導入 代碼: 在ViewController.m文件中 2.UILable常用屬性 property(nonatomic,copy) NSString *text; //設置文本內容 property(nonatomic,retain) UIFont *font; //設置字體 …

第6章 Python 數字圖像處理(DIP) - 彩色圖像處理3 -色彩變換、彩色校正、彩色圖像平滑和銳化、HSI彩色空間中的分割、RGB空間中的分割、彩色邊緣檢測

這里寫目錄標題色彩變換彩色圖像平滑和銳化使用彩色分割圖像HSI 彩色空間中的分割RGB空間中的分割彩色邊緣檢測彩色圖像中的噪聲色彩變換 # 圖像顏色分量的顯示 from PIL import Imageimg_ori Image.open(DIP_Figures/DIP3E_Original_Images_CH06/Fig0630(01)(strawberries_f…

javascript 在對象中使用 定時器_如何使用JavaScript 面向對象編程

學習目標理解面向對象開發思想掌握 JavaScript 面向對象開發相關模式面向對象介紹什么是對象Everything is object (一切皆對象)我們可以從兩個層次來理解對象&#xff1a;(1) 對象是單個事物的抽象。一本書、一輛汽車、一個人都可以是對象&#xff0c;一個數據庫、一張網頁、一…

char數組轉string_String類和其它數據類型的相互轉換

對于上面的這些包裝類&#xff0c;除了Character以外&#xff0c;都有可以直接使用字符串參數的構造函數&#xff0c;這也就使得我們將String類轉換為這些數據類型變得相當之簡單&#xff0c;即&#xff1a;Boolean(String s)、Integer(String s)、Long(String s)、Float(Strin…

ORACLE 各種閃回操作

1、Flashback Database&#xff08;利用閃回日志恢復&#xff09; Oracle Flashback Database特性允許通過SQL語句Flashback Database語句&#xff0c;讓數據庫前滾到當前的前一個時間點或者SCN&#xff0c;而不需要做時間點的恢復。閃回數據庫可以迅速將數據庫回到誤操作或人為…

【轉】介紹設置Session失效的幾種方法

轉載地址&#xff1a;http://developer.51cto.com/art/201106/269493.htm Session對象是HttpSessionState的一個實例。該類為當前用戶會話提供信息&#xff0c;還提供對可用于存儲信息會話范圍的緩存的訪問&#xff0c;以及控制如何管理會話的方法。下面介紹設置session失效的幾…

mysql導入數據load data infile用法整理

有時候我們需要將大量數據批量寫入數據庫&#xff0c;直接使用程序語言和Sql寫入往往很耗時間&#xff0c;其中有一種方案就是使用MySql Load data infile導入文件的形式導入數據&#xff0c;這樣可大大縮短數據導入時間。 假如是從MySql客戶端調用&#xff0c;將客戶端的文件導…

python3循環一直到一個值結束_一步一步學Python3(小學生也適用) 第十七篇:循環語句for in循環...

一、Python for in循環Python for in 循環&#xff0c;是用來遍歷任何數據序列&#xff0c;如一個列表&#xff0c;一個字符串&#xff0c;一個字典&#xff0c;一個元組等。for in 循環的一般語法如下&#xff1a;for item in 序列:語句塊else:語句塊for in 字符串&#xff1…

設置Jupyter notebook 默認工作路徑,修改Jupyter notebook 默認瀏覽器為Chrome

這里寫目錄標題一 設置Jupyter notebook 默認工作路徑二 修改Jupyter notebook 默認瀏覽器為Chrome一 設置Jupyter notebook 默認工作路徑 安裝好anaconda 后&#xff0c;jupyter notebook默認是有安裝好的。在windows的菜單欄找到anaconda目錄&#xff0c;如下圖 鼠標右鍵點…

python調用c#注意事項_Python調用C#編寫的DLL

起因是工作中需要用的開發編寫的DLL&#xff0c;但是它是使用C#編寫的&#xff0c;本人不想使用C#去寫測試代碼&#xff0c;所以需要使用Python來掉這個DLL內的方法 就用這個就很好&#xff0c;不要問為啥不用微軟的Ironpython和別的啥&#xff0c;好用就行了&#xff0c;解決問…

jquery實戰--定寬

大家有沒有遇到過一個問題&#xff0c;就是一個列表&#xff0c;或是一段文字過多時&#xff0c;截取多余的部分用省略號&#xff0c;好吧&#xff0c;證明你實力的時候到了&#xff0c;我下面先分解一下方法&#xff0c;再用插件寫出來,首先我們說的是&#xff0c;用到的第一個…

struts2 Action獲取表單數據

1.通過屬性驅動式 1.首先設置 表單中的數據的name值 如&#xff1a;<input type"text" name"username" value""> 2.你用的是struts2&#xff0c;那么就在java類中寫一個變量&#xff1a;變量名和頁面上的name值一致 并有這個變量的get 和…

python 計算器 eval ctf_CTF逆向--.NET與Python篇

題目(來源&#xff1a;Jarvis-OJ)&#xff1a;Classical CrackmeClassical CrackMe2FindKeyLoginClassical Crackme首先查殼沒有殼&#xff0c;不過發現這是一個.net的程序&#xff0c;將其拖進dnSpy中&#xff0c;找到主程序&#xff0c;同時發現關鍵代碼&#xff0c;如下所示…

2016年秋季個人閱讀計劃

閱讀書目&#xff1a;《軟件需求十步走》 讀后感發表日期&#xff1a;閱讀書目&#xff1a;《用戶故事與敏捷方法》 讀后感發表日期&#xff1a;第一篇&#xff1a;10月1日 第二篇&#xff1a;10月3日 第三篇&#xff1a;10月7日 第四篇&#xff1a;10月15日 第五篇&#xff1a…