首页
参考手册
HTML / CSS
HTML
HTML5
CSS
CSS3
Bootstrap3
Bootstrap4
Bootstrap5
Font Awesome
Foundation
JavaScript
JavaScript
HTML DOM
jQuery
AngularJS
AngularJS2
Vue.js
Vue3
React
TypeScript
jQuery UI
jQuery EasyUI
Node.js
AJAX
JSON
Echarts
Chart.js
Highcharts
Google 地图
服务端
Python
Python2.x
Linux
Docker
Ruby
Java
C语言
C++
Perl
Servlet
JSP
Lua
Rust
Scala
Go
PHP
数据结构与算法
Django
Zookeeper
设计模式
正则表达式
Maven
Verilog
ASP
AppML
VBScript
数据库
SQL
MySQL
PostgreSQL
SQLite
MongoDB
Redis
Memcached
数据分析
Python
NumPy
Pandas
Matplotlib
Scipy
R语言
Julia
移动端
Android
Swift
jQuery Mobile
ionic
Kotlin
XML 教程
XML
DTD
XML DOM
XSLT
XPath
XQuery
XLink
XPointer
XML Schema
XSL-FO
SVG
ASP.NET
ASP.NET
C#
Web Pages
Razor
MVC
Web Forms
Web Service
Web Service
WSDL
SOAP
RSS
RDF
开发工具
Eclipse
Git
Svn
Markdown
网站建设
HTTP
网站建设指南
浏览器信息
网站主机教程
TCP/IP
W3C
网站品质
技术文章
CMS建站篇
SEO运营篇
模板下载
文章汇
源代码:
下载代码
点击运行
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Vue.js 切换不同显示布局</title> <script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script> <style> /* 隐藏未编译的变量 */ [v-cloak] { display: none; } *{ margin:0; padding:0; } body{ font:15px/1.3 'Open Sans', sans-serif; color: #5e5b64; text-align:center; } a, a:visited { outline:none; color:#389dc1; } a:hover{ text-decoration:none; } section, footer, header, aside, nav{ display: block; } /*------------------------- 搜索框 --------------------------*/ .bar{ background-color:#5c9bb7; background-image:-webkit-linear-gradient(top, #5c9bb7, #5392ad); background-image:-moz-linear-gradient(top, #5c9bb7, #5392ad); background-image:linear-gradient(top, #5c9bb7, #5392ad); box-shadow: 0 1px 1px #ccc; border-radius: 2px; width: 580px; padding: 10px; margin: 45px auto 25px; position:relative; text-align:right; line-height: 1; } .bar a{ background:#4987a1 center center no-repeat; width:32px; height:32px; display:inline-block; text-decoration:none !important; margin-right:5px; border-radius:2px; cursor:pointer; } .bar a.active{ background-color:#c14694; } .bar a.list-icon{ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYzNkFCQ0ZBMTBCRTExRTM5NDk4RDFEM0E5RkQ1NEZCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYzNkFCQ0ZCMTBCRTExRTM5NDk4RDFEM0E5RkQ1NEZCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjM2QUJDRjgxMEJFMTFFMzk0OThEMUQzQTlGRDU0RkIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjM2QUJDRjkxMEJFMTFFMzk0OThEMUQzQTlGRDU0RkIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7h1bLqAAAAWUlEQVR42mL8////BwYGBn4GCACxBRlIAIxAA/4jaXoPEkMyjJ+A/g9MDJQBRhYg8RFqMwg8RJIUINYLFDmBUi+ADQAF1n8ofk9yIAy6WPg4GgtDMRYAAgwAdLYwLAoIwPgAAAAASUVORK5CYII=); } .bar a.grid-icon{ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjBEQkMyQzE0MTBCRjExRTNBMDlGRTYyOTlBNDdCN0I4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjBEQkMyQzE1MTBCRjExRTNBMDlGRTYyOTlBNDdCN0I4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MERCQzJDMTIxMEJGMTFFM0EwOUZFNjI5OUE0N0I3QjgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MERCQzJDMTMxMEJGMTFFM0EwOUZFNjI5OUE0N0I3QjgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4MjPshAAAAXklEQVR42mL4////h/8I8B6IGaCYKHFGEMnAwCDIAAHvgZgRyiZKnImBQsACxB+hNoDAQyQ5osQZIT4gH1DsBZABH6AB8x/JaQzEig++WPiII7Rxio/GwmCIBYAAAwAwVIzMp1R0aQAAAABJRU5ErkJggg==); } .bar input{ background:#fff no-repeat 13px 13px; border: none; width: 100%; line-height: 19px; padding: 11px 0; border-radius: 2px; box-shadow: 0 2px 8px #c4c4c4 inset; text-align: left; font-size: 14px; font-family: inherit; color: #738289; font-weight: bold; outline: none; text-indent: 40px; } /*------------------------- 列表布局 --------------------------*/ ul.list{ list-style: none; width: 500px; margin: 0 auto; text-align: left; } ul.list li{ border-bottom: 1px solid #ddd; padding: 10px; overflow: hidden; } ul.list li img{ width:120px; height:120px; float:left; border:none; } ul.list li p{ margin-left: 135px; font-weight: bold; color:#6e7a7f; } /*------------------------- 网格布局 --------------------------*/ ul.grid{ list-style: none; width: 570px; margin: 0 auto; text-align: left; } ul.grid li{ padding: 2px; float:left; } ul.grid li img{ width:280px; height:280px; object-fit: cover; display:block; border:none; } </style> </head> <body> <form id="main" v-cloak> <div class="bar"> <!-- 两个按钮用于切换不同的列表布局 --> <a class="list-icon" v-bind:class="{ 'active': layout == 'list'}" v-on:click="layout = 'list'"></a> <a class="grid-icon" v-bind:class="{ 'active': layout == 'grid'}" v-on:click="layout = 'grid'"></a> </div> <!-- 我们设置了两套布局页面。使用哪套依赖于 "layout" 绑定 --> <ul v-if="layout == 'grid'" class="grid"> <!-- 使用大图,没有文本 --> <li v-for="a in articles"> <a v-bind:href="a.url" target="_blank"><img v-bind:src="a.image.large" /></a> </li> </ul> <ul v-if="layout == 'list'" class="list"> <!-- 使用小图及标题 --> <li v-for="a in articles"> <a v-bind:href="a.url" target="_blank"><img v-bind:src="a.image.small" /></a> <p>{{a.title}}</p> </li> </ul> </form> <script> var demo = new Vue({ el: '#main', data: { // 视图模型,可能的值是 "grid" 或 "list"。 layout: 'grid', articles: [{ "title": "HTML 教程", "url": "https://www.muban99.com/html/html-tutorial.html", "image": { "large": "https://static.runoob.com/images/mix/htmlbig.png", "small": "https://static.runoob.com/images/icon/html.png" } }, { "title": "CSS 教程", "url": "https://www.muban99.com/css/css-tutorial.html", "image": { "large": "https://static.runoob.com/images/mix/cssbig.png", "small": "https://static.runoob.com/images/icon/css.png" } }, { "title": "JS 教程", "url": "https://www.muban99.com/js/js-tutorial.html", "image": { "large": "https://static.runoob.com/images/mix/jsbig.jpeg", "small": "https://static.runoob.com/images/icon/js.png" } }, { "title": "SQL 教程", "url": "https://www.muban99.com/sql/sql-tutorial.html", "image": { "large": "https://static.runoob.com/images/mix/sqlbig.png", "small": "https://static.runoob.com/images/icon/sql.png" } }, { "title": "Ajax 教程", "url": "https://www.muban99.com/ajax/ajax-tutorial.html", "image": { "large": "https://static.runoob.com/images/mix/ajaxbig.png", "small": "https://static.runoob.com/images/icon/ajax.png" } }, { "title": "Python 教程", "url": "https://www.muban99.com/python/python-tutorial.html", "image": { "large": "https://static.runoob.com/images/mix/pythonbig.png", "small": "https://static.runoob.com/images/icon/python.png" } }] } }); </script> </body> </html>
运行结果: