首页
微语
统计
友链
留言
memos
圈子
图床
推荐
相册
网站监控
VPS监控
Search
1
实现typecho微信时光机功能的图文教程
50,146 阅读
2
为Typecho添加webp解析
43,979 阅读
3
Memos备忘录,记录瞬间想法
29,528 阅读
4
emlog数据成功迁移到typecho
28,720 阅读
5
Jasmine - 简约、美观的博客主题
28,485 阅读
手机达人
免费资源
电脑网络
娱乐休闲
网站建设
威言威语
Typecho
Emlog
WordPress
服务器
主题
插件
排行榜    
登录
/
注册
Search
标签搜索
wordpress
发布
插件
免费
教程
typecho
EMlog
PHP
代码
CSS
华为
图片
安装
代码修改
评论
手机
诺基亚
微信
文章
智能
Chen'mo
累计撰写
1,272
篇文章
累计收到
382
条评论
首页
栏目
手机达人
免费资源
电脑网络
娱乐休闲
网站建设
威言威语
Typecho
Emlog
WordPress
服务器
主题
插件
页面
微语
统计
友链
留言
memos
推荐
相册
网站监控
VPS监控
搜索到
346
篇与
的结果
2015-02-08
涨姿势!写给网页设计师的网页设计简史
互联网的诞生本就是一个奇迹,作为其中最重要的载体之一,网页就是这个大时代最重要的缩影,相关技术、设计伴随着信息共享催动着整个时代滚滚向前。这是一段简短的网页设计发展史,我们可以看到技术、设计与思想的演进,看到无数有识之士改变世界的剪影。本文作者是网站Froont.com的联合创始人Sandijs Ruluks。当我发现设计网页有多投机取巧的方法之时,就逐渐开始对手打网页代码失去兴趣。的确,许多网页设计的问题并不止一种解决方案,但是很少有方案能解决所有的浏览器兼容性问题。最令我纳闷的是,为什么会有做设计和写代码的分工?随着技术的发展,许多在过去难以解决的问题现在可以轻松搞定,但为什么与此同时一些简单的事情反而越来越难以实现?这些问题的答案并不是简单的是与否,对与错,也许我们需要从网页设计的整个发展历程来寻找答案,找到真正弥合设计与代码之间隔膜的原因所在。 网页设计:黎明前的黑暗(1989)在互联网真正开始之时,黑色的显示屏仅能显示单色的像素。可以说,当互联网天地初开之时,WebDesign仅仅意味着字符和空格的排列组合。虽然图形化的界面早在80年代初就有了,但在此时普及率并不高。直到90年代,图形化界面才真正进入千家万户,而那时候,才是属于互联网的狂野西部。表格(table):网页的兴起(1995)能够显示图片的浏览器的诞生,是促使网页设计这个行业诞生的重要先决条件。实际上在当时,最接近于信息结构化的概念,是HTML中已有的元素:表格(Table)。所以,DavidSiegel 在他的网页设计书《Creating KillerSites》讲述了他设计优秀网站的秘诀:在表格中嵌套表格,将静态的表格和动态的表格以巧妙的方式结合到一起。尽管表格本身是用来承载数据的,用来承载内容和图片有点奇怪,但是在那个时代,这种方法依然显得颇为靠谱,并且大行其道。网页设计所面临的另外一个问题,就是如何保持网页那脆弱的结构。也正是因为这种需求,切片设计(SlicingDesign)逐渐流行了起来。设计师创建出漂亮的网页布局,随后开发者将整个设计稿切片,找出呈现设计的最佳方法。另一方面,表格还有一些炫酷的功能,比如垂直对齐,以像素为单位或者以百分比来控制对齐。在那个时代,表格可是近乎栅格系统一般的灵活的设计神器,也正是因此,那个时代的开发者并不喜欢前端的代码。(表格嵌套表格有多乱?)来自JavaScript的救援(1995)JavaScript的出现补足了尚且原始的HTML。举个例子,如果你想写个弹出窗,或者想动态修改某些对象的顺序?HTML不行,但是JS可以!不过此时JS的主要问题在于,它处于整个网页布局的顶层并且需要单独加载。很多时候它仅仅被懒惰的开发者用作一个简单的补丁,但如果使用得当,JS可以非常强大。今天,同样的功能如果CSS能实现,我们会尽量避免使用JS。不可否认的是,JS本身确实很强大,前端常用的jQuery,后端的Node.js都是不可多得的好东西。Flash:自由的黄金时代(1996)作为一门新技术,Flash为网页开发者/设计师带来了前所未有的自由,它打破了之前网页设计所固有的限制。借助Flash,设计师可以随心所欲地在网页上展现任何形状、布局、动画和交互,可以使用任何喜欢的字体,他们借助Flash熔于一体。所有的这一切最终会被打包成为一个文件,然后被发送到浏览器端显示出来。这也就意味着,用户只需要拥有最新的Flash插件和些许等待时间,就可以享有一个魔术般的网页。这是启动页面(splashpages)、介绍动画以及各种交互特效的黄金时代。不幸的是,这种设计并不开放,也不利于搜索,还需要消耗计算机大量的运算能力。2007年,当苹果发布他们的第一台iPhone的时候,就决定彻底放弃Flash,也正是在这个时候,Flash开始走下坡路——至少在网页设计领域。CSS的诞生(1998)差不多是在Flash崛起的同时,一种更好的网页结构化设计工具CSS诞生了。CSS的基本概念是将网页内容的样式分离出来,所以网页的外观和格式等属性将会在CSS中被定义,但内容依然保留在HTML中。早期版本的CSS并没有现在那么灵活,和许多新事物一样,它最大的障碍在于许多浏览器还没来得及接纳这一新技术,对于开发者而言,这是一个头疼的事情。需要明确说明的是,CSS并非全新的编程语言,它仅仅只是一种声明性语言。那么网页设计师需要学习编程吗?可能需要。但是网页设计师需要懂得CSS么?当然需要。栅格与框架:移动端的崛起(2007)此刻,在手机上浏览网页本就是一种全新的挑战。设计师除了要为不同设备设计不同的布局,还面临着内容控制的问题:小屏幕上展示的内容要和桌面端一样多,还是需要剥离开来?桌面端网页上闪亮精致的小广告要如何在手机上呈现?加载速度也是一个大问题,移动端设备的网络加载速度不够快,而且桌面端网页会消耗大量的流量。网页设计亟待改进。第一个重大的改进是栅格系统的出现。经过摸索,960栅格系统最终胜出,经典的12栏栅格被设计师们广泛的接纳,甚至成为许多设计师最常用的设计工具。接下来,各种常见的设计元素诸如表格、导航、按钮被标准化,打包成为可复用的套件,这基本上就构成了视觉元素库,其中还纳入了常见的代码。其中最典型的代表就是Bootstrap和Foundation,它们也使得网站和APP之间的界限逐渐模糊。当然,它们也不是没有缺点,借助这些库设计出来的网页往往大同小异,而且网页设计师要想使用它们还得深入了解相关的代码知识。响应式网页设计(2010)惊才绝艳的设计师EthanMarcotte决定挑战传统的网页设计,它让网页在内容不变的前提下,布局随着窗口和屏幕的变化而变化,并且将这种设计命名为响应式网页设计。网页设计师依然只需要HTML和CSS就可以实现这种功能,不得不承认这种设计理念非常超前。不过大家对于响应式设计依然有些许误解。对于设计师而言,响应式设计意味着为设计许多不同的布局。对于用户而言,响应式设计就意味着这个网页可以在手机上完美浏览。对于开发者而言,响应式设计意味着如何控制好网站图片应付移动端和桌面端,在不同情形和语义下,拥有良好的下载速度和呈现效果,等等。简而言之,就是一个网站能在任何情况下良好展现。至少在这一点上,所有人能达成共识。扁平化的时代(2010)设计网页布局总会花费大量的时间,好在这个时候我们开始抛弃复杂的光影效果,重新专注于根本的内容呈现。在此之前,网页设计讲求精美的图片和排版效果,漂亮的插画与周到的布局设计,而简化这些视觉元素之后,就是我们说所的“扁平化设计”。将复杂的效果淡化之后,视觉的扁平化,也促使内容和信息层级的扁平化。充满光影特效的按钮被扁平化的图标所替代,矢量图形和图标字体也开始被大范围使用,网页字体和版式设计的结合令网页视觉更加漂亮。有趣的是,这时候的网页设计开始有返璞归真的感觉。光明的未来(2014)技术的革新已经开始将网页设计推动到一个全新的境界。在许多设计平台上,设计师只需要在屏幕上移动不同的控件就可以生成整洁可用的代码出来,并且这些代码非常灵活,可控度极高!试想一下,开发者无需担心浏览器兼容性,可以专注于更加实际的问题!新诞生的概念正在推动网页设计。CSS中新诞生的属性,诸如vh和vw(viewportheight 与width),就使得网页元素的位置控制更加灵活自由,一次性解决了设计师纠结多年的顽疾。作为CSS一部分的Flexbox则是另一个新事物,它可以快速创建布局,轻松修改属性而无需编写过多代码。网页设计正在飞速发展,未来还会有越来越多的创新,就让我们拭目以待吧!原文地址froont优设网译者:@陈子木
2015年02月08日
2,651 阅读
0 评论
0 点赞
2015-02-05
学习和使用PHP应该注意的10件事
1 多阅读手册和源代码没什么比阅读手册更值得强调的事了–仅仅通过阅读手册你就可以学习到很多东西,特别是很多有关于字符串和数组的函数。就在这些函数里面包括许多有用的功能,如果你仔细阅读手册,你会经常发现在以往的项目开发过程中,很多时候你在“重复发明轮子”,而实际上你只需要一个核心函数就可以完成相应的功能。手册是你的朋友。另外,现在有很多使用PHP开发的开源程序。为什么不去学习和借鉴呢?下载一份开源的PHP应用程序的源代码,仔细阅读它吧。也许越大的项目越值得去阅读,虽然它们也许有更复杂的结构和系统,但也有更详细的解释文档。 2 编写模块化代码良好的PHP代码应该是模块化的代码。PHP的面向对象的编程功能是一些特别强大的工具,可以把你的应用程序分解成函数或方法。你应该尽可能多的从你的应用程序的服务器端分开前端的HTML/CSS/JavaScript代码,你也可以在任何PHP框架上遵循MVC(模型-视图-控制器)模式。 3 代码编写规范良好的PHP代码应该有一套完整的代码编写规范。通过对变量和函数的命名,统一的方法访问数据库和对错误的处理,以及同样的代码缩进方式等来达到编程规范,这样可以使你的代码更具可读性。 4 编写可移植代码良好的PHP代码应该是可移植的。你可以使用php的现有功能,如魔术引号和短标签。试着了解你的需求,然后通过适应PHP特性来编写代码让代码独立、可移植。 5 编写安全代码良 好的PHP代码应该是安全的。PHP5提供了出色的性能和灵活性。但是安全问题完全在于开发人员。对于一个专业的PHP开发人员来说,深入理解重大安全漏 洞是至关重要的,如:跨站点脚本(XSS)、跨站请求伪造(CSRF)、代码注入漏洞、字符编码漏洞。通过使用PHP的特殊功能和函数, 如:mysql_real_escape_string等等,你可以编写出安全的代码。 6 代码注释代码注释是代码的重要组成部分。通过代码注释可以知道该变量或函数是做什么的,这将在今后的代码维护中十分有用。 7 使用单引号代替双引号字符串始终使用单引号代替双引号,以避免PHP搜索字符串内的变量导致的性能下降。 用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会 8 转义字符串输出使用ENT_QUOTES作参数传递给htmlspecialchars函数,以确保单引号(')也转换成HTML实体,这是一个好习惯。 9 使用逗号分隔字符串输出通过echo语句输出使用逗号(,)分隔的字符串,要比使用字符串连接操作符(.)的性能更好。 10 输出前检查传来的值输出前检查传过来的值$_GET['query']。使用isset或empty函数,可以用来检查变量是否为null值。
2015年02月05日
3,978 阅读
0 评论
0 点赞
2015-01-28
怎样成为一名优秀的程序员
1、迷恋技术,保持对代码的热情兴趣是最好的老师,如果不是最初对编程充满兴趣,应该很少有人会选择程序员这个行业,但同时程序员是一个有点乏味枯燥的工作。如果你不迷恋技术,对代码充满热情,那你只能做一个平淡的程序员。2、在实践中成长,磨砺技术程序员是一个在实践中成长的职业。你看再多书,听再多的视频课,自以为学到很多东西,但正在接触项目的时候,就两手发软,头脑空白了。最好的提方法,是正在参与到项目中去,最好是能参与从设计到开发到测试到维护一整套的整套流程。3、加班虽苦但也是提高的过程虎虎在之前的文章中说过:毕业之后的前三年最为重要,要认认真真钻研技术,积累经验,至少能在某一方面成为技术达人。程序员加班是很正常的事情,要加班工作,加班学习,同时在这段时间要注意多总结,注意工作方法,合理安排时间,提高工作效率。你现在的付出是为了以后的成功!4、不怕失败,学会寻找成就感新程序员由于技术水平、经验的欠缺,写出的程序bug多,执行效率低,可能被同事嘲笑(我发现这还是普遍现象),然后被上司责怪,内心充满有挫折感。要学会自我减压,相信挫折与失败只是暂时的,发奋图强。在工作中要学会寻找成就感,哪怕你只是完成一个小功能,优化了一段代码,都是你辛勤付出的结果,是你能力提高的体现。5、要学会写文档不要以为程序员只要负责写代码,如果是那样,你永远不能有上升的空间了。因为不管是走技术路线,还是管理路线,都离不开文档,方案文档,技术文档,产品介绍文档,管理文档等等,是你了解开发流程,产品运营的必由之路。6、学会复制粘贴现在的开发资料已经非常的充实,遇到难以解决的问题不要过分纠结,为难自己,请打开搜索引擎搜索一下。毕竟,你做的是工作,不是在学校做研究。7、细节决定成败不少程序员都有这样的习惯,好不容易思考出解决问题的方法,迫不及待的把代码写出来,功能也实现了,立马提交代码完事。殊不知你的代码中还有不少细节需要完善,大到内存泄露、资源释放、代码是否高效,小到注释是否规范,都是你必须关注的问题。且不谈这些细节问题对你做出来的项目的影响,就是对你编程习惯的影响也是深远的。
2015年01月28日
2,077 阅读
0 评论
0 点赞
2015-01-25
看完秒懂什么叫 大数据 O2O 蓝海 红海 互联网思维 众筹
什么叫大数据?某必胜客店的电话铃响了,客服人员拿起电话。客服:必胜客。您好,请问有什么需要我为您服务?顾客:你好,我想要一份……客服:先生,烦请先把您的会员卡号告诉我。 顾客:16846146***。 客服:陈先生,您好!您是住在泉州路一号12楼1205室,您家电话是2646****,您公司电话是4666****,您的手机是1391234****。请问您想用哪一个电话付费? 顾客:你为什么知道我所有的电话号码? 客服:陈先生,因为我们联机到CRM系统。 顾客:我想要一个海鲜比萨…… 客服:陈先生,海鲜比萨不适合您。 顾客:为什么? 客服:根据您的医疗记录,你的血压和胆固醇都偏高。 顾客:那你们有什么可以推荐的? 客服:您可以试试我们的低脂健康比萨。 顾客:你怎么知道我会喜欢吃这种的? 客服:您上星期一在国家图书馆借了一本《低脂健康食谱》。 顾客:好。那我要一个家庭特大号比萨,要付多少钱? 客服:99元,这个足够您一家六口吃了。但您母亲应该少吃,她上个月刚刚做了心脏搭桥手术,还处在恢复期。 顾客:那可以刷卡吗? 客服:陈先生,对不起。请您付现款,因为您的信用卡已经刷爆了,您现在还欠银行4807元,而且还不包括房贷利息。 顾客:那我先去附近的提款机提款。客服:陈先生,根据您的记录,您已经超过今日提款限额。顾客:算了,你们直接把比萨送我家吧,家里有现金。你们多久会送到?客服:大约30分钟。如果您不想等,可以自己骑车来。 顾客:为什么? 客服:根据我们CRM全球定位系统的车辆行驶自动跟踪系统记录。您登记有一辆车号为SB-748的摩托车,而目前您正在解放路东段华联商场右侧骑着这辆摩托车。 顾客:当即晕倒......什么叫O2O?O 大款以每月20000的价格包养女大学生B,B女生竟每月从包养费中拿出10000包养适龄男学生C(B2C),C男觉得不平衡,每月花5000包养起o 小女生,o小女生发现自己是这条生物链的最底端后,很不爽,直接微信了O大款,于是两人踢了B和C(砍掉中间),直接交易,每月8000。 (O2O模式互联网思维核心就是:干掉中介)什么叫蓝海? 昨天在香格里拉门口停车,看见一个车位,这时有辆迈巴赫要停进车位。我走上前敲了敲他玻璃,甩出去一百块钱对他说:”这个车位我看中了,你去别的地方停!” 他觉得我小看他了,冲我脸上甩来十几张一百的叫我滚一边儿去。 后来,我又如法炮制…妈呀,一晚上我竟然赚了两万多。 什么叫红海? 我把自己的赚钱经历上网了,大家都在转发,一下子有许多人都想学习我,如法炮制。这时候,满大街都是手持一百元钱的人,他们都在找寻找车位的豪车。什么叫互联网思维? 看到这么多人拿着一百元在街上转悠,我知道自己的机会来了:于是,我租一辆豪华迈巴赫车开到大街上,冲着这些手持一百元等豪车的人开过去。这时候,谁递过来一百元要我让车位,我就直接收下他的一百元.......不说了,又一个手拿一百的人过来了。 什么叫众筹?天冷了,想吃火锅,又懒得出去,咋办呢?首先邀请5个人。给第1个电话:“顺路买点菜来,就差蔬菜了。”接着第2个:“顺路买点羊肉,就差肉了。” 然后第3个:“顺路买点冻豆腐各种丸子啥的,就差这个了。”之后第4个:“就差酒了。”最后第5个:“火锅底料不够了,带点来。”然后,挂电话烧锅水坐 等……
2015年01月25日
2,785 阅读
0 评论
0 点赞
2015-01-16
前端开发规范之html编码规范
原则1.规范 。保证您的代码规范,趋html5,远xhtml,保证结构表现行为相互分离。2.简洁。保证代码的最简化,避免多余的空格、空行,保持代码的语义化,尽量使用具有语义的元素,避免使用样式属性和行为属性。任何时候都要用尽量简单、尽量少的元素解决问题。3.实用。遵循标准,但是不能以牺牲实用性为代价。4.忠诚。选择一套规范,然后始终遵循。不管代码由多少人参与,都应该看起来像一个人写的一样。语法1.小写。html标签、html属性全部小写。2.嵌套。所有元素必须正确嵌套。3.闭合。双标签必须闭合,单标签(自关闭标签)不闭合。<!--bad--> <br/> <hr/> <!--good--> <br> <hr> 1.详尽注释。解释代码解决问题、解决思路、是否为新鲜方案等。2.模块注释。github建议不使用模块结束注释。<!-- 新闻列表模块 --> <div class="news"> ... <!-- /新闻列表模块 --> <!-- 有不少规范建议不使用结束模块的注释,因为这样太丑了,又加重文件负荷。 --> 3.待办注释。 文档1.文档类型使用html5标准文档类型,文档类型声明之前,不允许出现任何非空字符。不允许添加<meta>强制改变文档模式。2.html元素上指定lang属性。显示页面语言,有助于语言合成工具来确定怎样发音,以及翻译工具决定使用的规则,等等。3.指定明确的字符编码。让浏览器轻松、快速的确定适合网页内容的渲染方式。4.IE兼容模式。Internet Explorer 支持使用兼容性 <meta> 标签来指定使用什么版本的 IE 来渲染页面。如果不是特殊需要,通常通过 edge mode 来通知 IE 使用最新的兼容模式。<meta http-equiv="X-UA-Compatible" content="IE=Edge"> 5.head部分的顺序:a.<meta>元素,b. 需要的js文件(eg. Moddernizr or HTML5 Shiv),c. <title>元素,d.样式表。6.可以使用IE条件注释的方式兼容IE,但是不要添加额外的样式表。<!--bad--> <!--[if IE8]> <link rel="stylesheet" href="/Assets/styles/IE8.css" > <![endif]--> <!--[if IE7]> <link rel="stylesheet" href="/Assets/styles/IE7.css" > <![endif]--> <!--good--> <!--[if IE8]><html class="ie8" lang="zh-cn"><![endif]--> <!--[if IE7]><html class="ie7" lang="zh-cn"><![endif]--> 属性1.双引号属性值,不要使用单引号。2.省略type属性。使用style、link、script,不用指定type属性,因为 text/css 和 text/javascript 分别是他们的默认值。3.省略Boolean属性值。Boolean属性不用添加取值,disabled,checked,selected等。4.省略url类属性资源协议头。5.属性顺序。html属性应该按照特定的顺序出现以保证易读性。class->id,name->data-*->src,for,type,href->title,alt->aria-*,role。6.多媒体元素添加替代属性。图像增加alt属性,音视频增加替代文字。7.不手动设置tabindex属性,让浏览器自动设置。元素1.避免冗余标签。2.避免JS生成标签。3.段落文字应该用<p>,避免使用<br>。4.列表项放<ul>、<ol>、<dl>,不要使用一系列的<div>或<p>5.<input>使用for属性绑定<label>。6.使用<label>标签包裹radio或checkbox和他们的文字,不用再使用for属性。7.使用单选、复选替代下拉菜单。(radio or checkbox instead of select menu)8.form button应制定type类型,使用type="submit"、type="reset"或type="button"。9.首要的表单按钮首先出现(在DOM中),尤其是适用多个提交按钮的场合。视图中显示的顺序可以利用css修改。10.有效使用<thead>、<tfoot>、<tbody>、<th>(scope属性)。可以把<tfoot>放<tbody>前提高加载速度。 <table summary="This is a chart of invoices for 2011."> <thead> <tr> <th scope="col">Table header 1</th> <th scope="col">Table header 2</th> </tr> </thead> <tfoot> <tr> <td>Table footer 1</td> <td>Table footer 2</td> </tr> </tfoot> <tbody> <tr> <td>Table data 1</td> <td>Table data 2</td> </tr> </tbody> </table>格式1.soft tab。2.嵌套缩进。3.删除行尾空格。4.块元素、列表元素、表格元素都放在新行。5.inline元素视情况换行。6.努力保持每行长度小于80列,如果太长可换行。<!--bad--> <img class="block_element" id="unicorn" src="http://cl.ly/image/1a1u013e002z" alt="unicorn, rainbows, poop and stuff" width="500" height="400" /> <!--good--> <img class="block_element" id="unicorn" src="http://cl.ly/image/1a1u013e002z" alt="unicorn, rainbows, poop and stuff" width="500" height="400" > 关于编码规范,没有标准答案,没有正确对错,只有更合理、更有效。来源:前端开发whqet 的博客
2015年01月16日
2,809 阅读
0 评论
0 点赞
2015-01-13
响应式设计的现状与趋势
从 2012 年开始到 2014 年,各大家对 Web 设计的趋势预测中,都提到响应式设计;2015 年网页设计趋势预测中,响应式仍在继续。这个经历了几年依然大热的响应式,在过去的几年里,快速巩固了自己的地位,并掀起了一股网页设计新标准的浪潮。这 里本人基于一些资料文献及自己的陋见,谈谈响应式设计的一些现状和趋势。源起2010 年 5 月,伊桑.马科特(Ethan Marcotte)在“A List Apart”写了一篇开创性的文章(题为“Responsive Web Design” ),他利用三种已有的工具:流动布局(fluid grids)、媒介查询(media queries)和弹性图片(scalable images)创建了一个在不同分辨率屏幕下都能漂亮地显示的网站。Ethan Marcotte 力劝设计师们要去利用那些 Web 独有的特性去进行设计: “我们可以将不同联网设备上众多的体验,当作是同一网站体验的不同侧面来对待,而不要为每种设备进行单独剪裁而使得设计彼此断开,这才是我们前进的方向。 虽然我们已经能够设计出最佳的视觉体验,但还要把基于标准的技术也嵌入到我们的设计中去,这样才能使得我们的设计不仅灵活,而且还能适应渲染它们的各种媒 介。”Ethan Marcotte 证明了一种在多种设备上都能提供卓越体验的方法的存在,而且这一方法不会忽视不同设备的差异,也不会强调设计师的控制权,而是选择了顺其自然并拥抱 Web 的灵活性。这里简单介绍下上面的提到的三个概念:流动布局(fluid grids)、媒介查询(media queries)和弹性图片(scalable images)原本都是指现有的一些技术手段,但在做响应式设计研究的过程中,这些概念还是有更广泛的意义,设计师也应该有所了解: 流动布局: 原特指以百分比为度量单位的布局技术实现方式。这里就不对如流动布局、弹性布局、流体栅格等各种概念做一一说明。笔者就此统为一个大的概念:在响应式设计 的布局中,不再以像素(px)作为唯一单位,而是采用百分比或者混合百分比、像素为单位,设计出更具灵活性的布局方式。 媒介查询:媒介查询可以让你根据在特定环境下查询到的各种属性值——比如设备类型、分辨率、屏幕物理尺寸及色彩等——来决定应用什么样的样式。通过使用媒介查询,可以获取到设备及设备的特性,并给出求同存异的方案,从而解决之前在单纯的布局设计中遗留的问题。 弹性图片: 伴随布局的弹性,图片作为信息重要的形式之一也必须有更灵活的方式去适应布局的变化。个人认为弹性图片是 Ethan Marcotte 提出设计产品时提出的概念,我们在后续的研究中可以以图片为典型,扩大研究范围:除了图片,还应该包括图标、图表、视频等信息内容的响应方式研究。 盛行响应式设计的概念从提出至今,一直不断蔓延扩散,并得到各方认可的主要原因:1、外部环境:快速增长且日趋加剧的可联网设备的多样化,让现今已不再有标准的屏幕尺寸;2、自身特色:严格定义的响应式一般是指响应式 Web 设计,而 Web 凭借其特有的灵活性和可塑性,可以适应各种尺寸和配置的设备,可以无处不在。3、内部需求:响应式设计概念一提出,各大网站及平台都希望能够采用这秉一应万的模式,可以更灵活地去适配更多设备,尤其是现在移动设备大爆棚的时代。当然也并不是所有的情况都理所应带应该采用响应式设计,那么什么情况下更适合采用响应式呢?1、你想节约成本地去适应更多场景资源都是有限的,但总是希望能利用有限的资源去获得更大的价值。虽然比起开发设计一个普通的网站来说,要打造一个响应式站点,所需要的人力和时间资源都会有所增加,但比起为不同设备分别打造多个版本的成本还是要低很多;从维护的角度来说,也会轻松很多。2、你并不清楚要设计开发的全新产品更适合哪个场景 与其通过预测挑选核心设备再进行分别设计,倒不如先花些心思将网站打造得更具弹性,使其在各种设备中都拥有尽可能优秀体验。因为在各方面都未知都情况下,做预测会加剧过程风险,使得结果存在巨大的挑战性。3、你希望网站可以兼容未来的新设备 新的设备层出不穷,与其被动地进行更新维护,不如主动应万变,成为响应式。 当然这里只是说更适合,其实个人认为只要项目资源和时间允许,基本上大部分网站都可以去尝试实现响应式;而对于初次尝试响应式设计的,也可以从“简单浏览型页面”开始。模式目前大多网站中选择成为响应式的设计模式主要有两种:1、基于设备:通过主流设备的类型及尺寸来确定布局断点(break point),设计多套样式,再分别投射到响应的设备。2、内容优先:根据内容的可读性、易读性作为确定断点(break point)的标准,即在对内容进行布局设计的时候,可以无视设备,有内容决定何时需要采用不同的呈现方式。个人还是倾向内容优先的方式,这是真正符合响应式设计核心策略的模式,也是对未来友好的方式。 从过去基本上是基于 pc 的几个尺寸,选择最佳的标准尺寸去设计页面;到现在移动设备已经玲琅满目,同时电视、穿戴设备也慢慢开始起来,已经不再有固定的尺寸;未来,将是更加无法 预知的设备环境;那么什么才是王道呢?——就是内容本身! 变化总是来得快且狠,我们要做的就是抓住那根可以贯通全局的线!在内容优先的策略中,有三点思维模式可以贯穿整个响应式设计的过程:1、忘记设备:因为我们不知道用户会用什么样的设备来访问网站,因此,我们必须尽可能地把所有情况都囊括进来;所有的东西(布局、组件等)都能与不同类型的设备和平台相兼容。2、优雅降级:虽然这个概念一开始是技术实现上对新的特性在老的浏览器上无法很好实现时的折中做法,但在此仅想表达在对布局做弹性设计时,内容从宽到窄的变化呈现,必须经过重重筛选,留存最核心的内容块。这种模式非常适合对已存在的 pc 页面产品进行响应式设计改造。3、渐进增强:此概念是在 Steven 在 2003 年的 SXSW 活动上提出的。在本质上来说,就是把优雅降级倒过来:先创建一个基本体验,侧重让内容以一种简介的方式来展现;之后,在保证基本体验的前提下,开始着手做有关 显示的布局和交互。而在此,也借用来说明下对于响应式设计的内容策略中,内容从窄到宽的变化呈现中,可以让内容的丰富度也相应地有所增加。这种模式与移动 优先策略是相匹配的。当然,目前响应式也是有存在各种争论的,也许你有一个很好的理由不用响应式网页设计?但我想没人会说,“让我们摆脱响应式设计吧”,而实际上,越来越多的网站选择成为响应式。2014 年如此,2015 年也还是会继续,因为这已经不是种趋势,而怡然是种常态了。未来的路虽然响应式设计的优势和趋势已被普遍认可,但目前响应式设计的模式的普及还是有很多难题需要突破:1、响应式图片:目前弹性图片的做法主要是:缩放、剪裁、分条件加载等实现方法本质上都只是一个技巧,只是治标不治本地掩盖了问题,并未真正完美地实现图片的弹性。2、跨端的交互:在响应式设计中,我们不仅要需要考虑桌面用户的使用习惯,还必须兼顾不同尺寸的手持设备。比如在桌面端无尽优雅的 Hover,在移动端却是无比糟糕的体验,如何“求同存异”,让各端体验均能最佳,还是需要继续深入探究的。3、性能:性能估计是在响应式开发中最大的痛,按条件加载、隐藏或显示什么内容,都会比单一条件判断的代码结构来的繁琐,并影响体验及维护。尤其是移动性能上,更多样的设备具有更加复杂的使用环境,如何识别设备,并让设备在不同环境均能良好体验,也是一根硬骨头。4、合作流程:响应式设计远远不止是一种简单的设计策略,它为 Web 项目带来的是一整套全新的、完整的方法,还应该包括一种新的、可以更好地利用这一模式的工作流程。最后,我想说下响应式体现的是一种高度适应性的设计思维模式。在响应式设计探究的道路上,响应式本身不是唯一目的,基于任意设备对页面内容进行完美规划的设计策略及工作流程应该是我们更大的课题~来自: www.aliued.cn
2015年01月13日
2,651 阅读
0 评论
0 点赞
2015-01-07
极客学院 JS学习记录
以前只会些HTML,想学JS不知道从哪入门,最近一直在看极客学院的HTML5视频,终于对JS有点认识了。推荐大家看看:http://www.jikexueyuan.com/path/html5/不过它需要购买会员,验证邮箱和手机后,可体验5天免费VIP,我就这样看了几天,感觉很不错。可以配合上个月我发现的慕课网(纯免费),学习特有效果。 在极客标签上所以前收藏的TAB标签效果拿出来学习学习下,关键代码如下:网址:https://cmsblog.cn/pp/tab.html<script type="text/javascript" src="http://cdn.gbtags.com/jquery/1.11.1/jquery.min.js"></script> <style>*{margin:0px;padding:0px; } .tab{width:600px;border:1px solid #ccc; margin:5px; } .tab ul.menu{height:40px; margin:0px; background:#f6f6f6;width:600px; } .tab ul.menu li{float:left;text-align:center;width:100px;height:38px;line-height:38px;list-style:none; border-right:1px solid #ccc;cursor:pointer;} .tab ul.menu li.active{background:#e1e1e1;color:#333; border-right:1px solid #ccc;} .tabc1,.tabc2,.tabc3,.tabc4{height:190px;border-top:1px solid #ccc;margin-top:-2px; padding:5px; } .tabc2,.tabc3,.tabc4{display:none;}</style> <body> <script>$(function () { $('.tab ul.menu li').click(function () { var Index = $(this).index(); objnb = Index; $(this).addClass('active').siblings().removeClass('active'); $('.tab').children('div').eq(Index).show().siblings('div').hide(); }); });</script><div class="tab"> <ul class="menu" > <li class="active">tab1</li> <li>tab2</li> <li>tab3</li> <li>tab4</li> </ul> <div class="tabc1">1</div> <div class="tabc2">2</div> <div class="tabc3">3</div> <div class="tabc4">4</div> </div> <p>把click事件改成mouseover事件,可变成鼠标移到上面就显示</P>
2015年01月07日
2,844 阅读
0 评论
0 点赞
2015-01-05
2015年,网站设计十大趋势
每年,网站设计都在快速进步,每天几乎都有新的设计出现。我可以想象得到,2015年将出现最好的网站,包括2014年已经预测到的许多趋势。随着这些趋势在2015年左右实现,现在该是时候让我们预测2015年可能出现的新趋势了。每个人都在反思2014年,并展望2015年,下面就让我们看看2015年可能出现的网站设计趋势。今天出现的大多数新网站倾向于更长的页面,并通过滚动方式翻页。随着移动设备越来越受欢迎,以滚动方式浏览显示器上的内容变得越来越常见,正代替点击方式,特别是在设备的主页面上。对于用户来说,以滚动翻页的方式获得信息显然比不断地点击按钮更简单。主页并非滚动翻页越来越流行的唯一地方。随着超长滚动网站(即一页式网站)日益变得热门,滚动带来的好处也更多,除主页面外的其他许多地方也开始出现这种模式,比如有关网页以及产品网页等,它们都已成为展示各种内容的简单显示方式。比如,苹果iPhone 6的滚动翻页方式已经扩展到许多地方,可以展示该产品各种特点和性能。此外,iPhone 6网站也增加了一些流畅的动画,让滚动体验在视觉上变得更具吸引力。▲讲故事+互动对于网站来说,拥有令人感到惊异的内容总是非常关键,而利用这些内容讲故事更是一大优势。2015年的网站设计很可能聚焦于如何为用户讲故事。比如,Space Needle(美国西雅图地标建筑太空针塔)的网站非常漂亮,可以通过使用讲故事的方式介绍Space Needle的有关事实,并以滚动翻页的设计予以支持。Space Needle也证明2015年的另一种趋势——互动。网站设计正添加更多互动和动画元素,以独特和有吸引力的方式帮助介绍内容。在网站设计中加入互动与动画,可以为你的网站带来令人惊讶的因素。比如,Impossible Bureau网站的互动性就很强,可以对你的滚动和悬停做出回应。▲大标题背景图像缺失过去几年中,网站设计中十分流行大标题背景图像,上面经常有文字说明,这也是大多数访客浏览网站时首先看到的东西。而在大标题背景图像如此流行的情况下,你的网站如何能脱颖而出呢?采取相反措施。近来出现的一些网站逆势而行,即没有大标题背景图像。我猜,他们这样做不仅仅是不愿意追随潮流,而且也在寻求提高网站的性能与速度。New Wave Company的网站就体现出这些特点。它使用大标题欢迎访客,大字体集中在网页中心,但标题后面没有大背景图片。这是一种高雅的做法,效果并不次于其他使用大背景图像的流行网站设计。▲剔除非必要设计元素有一种设计观念认为,当所有非必要元素都被剔除后,网站设计才算完成。2015年,我认为我们能够看到这种观念更好地体现出来,因为更多网站都在试图通过剔除非必要设计元素实现网站设计的简化。New Wave Company网站中剔除大背景图像的做法就是最好例证之一。另一个剔除非必要设计元素确保网站简洁的最佳例证是Rareview Digital Agency网站,它也没有使用大背景图像标题问候访客。设计师们实际上已经消除了许多当前网站上流行的设计元素,比如背景颜色、众多图片以及复杂布局等。相反,他们选择更清晰、简洁的网站设计,在注重设计、图片以及颜色的当前网站中,这些设计不禁令人眼前一亮。▲固定宽度的中心网站布局过去几年中,大多数网站都使用了以宽度为中心的网站布局,它可以让图片或视觉延伸部分在整个浏览器视口中全部展现出来。在这种趋势热门前,大多数网站都是固定宽度的,内容处于网页中心,你可以看到网站两侧的终结部分。固定宽度趋势似乎正以更现代的方式回归,只是网站及其内容部分不再处于视口的边侧,有些网站选择最大宽度,以确保它们的内容处于视口中心。Michele Mazzucco的网站就是如此。 ▲专业高质量自定义摄影图库照片依然在设计中占有一席之地,但是对于大多数最新出现的网站来说,图库照片开始采取高质量的专业摄影照片,它们通常是独一无二的,专为网站自定义拍摄的。使用自定义摄影比仅选区图库照片在设计方面取得了更大进步,它让你的网站独一无二,其他网站无法使用同样的照片。比如,Grain and Mortar网站的自定义照片使用了该网站的大标题,这展现出个性化效果,因为照片上的人和办公场景都是在Grain and Mortar真实存在的,毕竟没有假办公空间的图库照片!▲弹出/滑出应用式菜单响应式网站设计已经流行了一段时间,可是直到近来,大多数网站设计重点都放在令网站在桌面设备上看起来更好,而在手机或平板设备上看得过去即可。无论何种设备,响应式网站设计正迈向更好体验。我们正看到这种设计元素向移动设备上转移,并在更广泛地使用。比如24ways与Rawnet都展示了这种观念,将类似应用和响应式菜单添加到整个网站中,而不仅仅有更小视口的设备上。在这种情况下,这两家网站选择靠左或靠右的垂直菜单,而不是位于顶部的水平菜单,使用起来更像弹出/滑出应用式菜单,这种技术允许网站应用与响应式设计出现在更小的视口上。▲隐藏主菜单这与上面讨论过的弹出/滑出应用式菜单很像,我期待更多网站可能向首次访问网站的访客隐藏主菜单。只有当访客准备移动和点击相应图标后,这些隐藏菜单才会显示出来。这种响应式设计技术正开始出现在网站设计中,而非仅仅小的视口中。Brian Hoff Design的新网站就是最好的例子。他使用网站右上角的汉堡图标隐藏导航功能,直到访客点击它。过去2年,这种行为已经逐渐被接受,访客正习惯在网站应用或手机应用上如此操作。他将这种模式应用到网站上,无论视口多大,都可帮助确保网站简介,功能完全。▲非常大的字体2014年,字体在许多网站设计中发挥重要作用,我未发现这种趋势在短期内改变的迹象。可是2015年,我看到网站中的标题和字体变得越来越大。夸张地说,就连天上的飞机可能都能看到地面上的字。当你访问Tiny Giant的网站时,你会看到很大的字体。这实际上是一种声明,让你很难错过。大字体将继续在2015年的网站设计中发挥重要作用,成为确保提高访客视觉层次的方法。访客首先会看到最大的字体,因为那会首先吸引你的注意力。▲性能与速度许多设计趋势受需求驱动,以促使网站加载速度更快,消耗的宽带流量更少。这篇文章中讨论的大多数趋势都可能需要减小网站,为那些手机、平板设备或更慢网络用户寻找更快加载方式。网站设计师和开发者越来越强烈地意识到自己网站的权重,以及用户如何与他们互动。响应式网站设计已经帮助减轻这些担忧。网速过慢以及设备类型等因素迫使设计师和开发者密切关注它们的文件和网站大小,网站加载速度在不同网速条件下也不尽相同。无需惊讶,2015年需要加载速度更快、没有滞后感的无缝网站。(风帆)
2015年01月05日
2,701 阅读
0 评论
0 点赞
2015-01-02
老牌博客程序PJBlog发布PJBlog5云博客程序
采用BootStrap的UI设计框架,响应式后台,兼容最新的PC和手机端操作。内核架构全新升级,继承国际CommonJS规范,语法风格与NodeJS完全相同,IIS端的NodeJS语法。云端数据交互,博客圈等功能让你的独立博客不再有孤单的感觉。内核架构全新升级,继承国际CommonJS规范,语法风格与NodeJS完全相同,IIS端的NodeJS语法。云端数据交互,博客圈等功能让你的独立博客不再有孤单的感觉。云博客程序主页:http://app.webkits.cn/用户云平台管理。 在我创建PJBlog5之前,和舜子商议了PJBlog5建立联盟圈的想法,得到了舜子的一致认同,这是独立博客想做而无法做的事情。虽然这样的做法,对于ASP程序来说非常艰难,但是我们渐渐克服了困难,将云平台搭建起来。 我们的用户,统一由云平台上注册,采用国际协议Oauth2.0登录后台。这也表示,基于云平台的用户已经可以在独立博客上登录了。这是史无前例的独立博客体系。 对于访问者用户,也可以通过PJBlog5云平台账户登录任何一个PJBlog5网站(无须注册),来完成你的评论,留言,以及分享。这方便了用户,也可以让我们统一管理这群用户。 PJBlog5的Oauth2.0机制,是由PJBlog5作者沈赟杰(evio)独立完成,在参阅了大量中外实例后,完成了这套服务端的体系。其中包括Oauth2.0官网,腾讯,新浪微博等等平台OAUTH2.0实例。为什么我们要做这样一个用户圈,是因为以往的独立博客的弱势之处在于,虽然是同一套博客,但是博客与博客之间的互通几乎为0。在web现在的交互时代,如果一个博客几乎与外界没有关联,那么这套博客只能看,而没有更多的作用。我们抱着为用户解决这样的困惑的想法,建立了云平台来打造这个独立博客之间的信息化生态圈,让博客不死,让博主体验到更好的写作乐趣,这是我们的宗旨。数据库要求:mssql 2000+环境要求: iis 6.0+浏览器要求:>=ie8 firefox chrome 及所有webkit内核浏览器开发主题要求:1. 会html+css2. 懂js语法3. 对主题制作有一定经验开发插件要求:1. 精通js2. 对数据库操作非常熟悉3. 对nodejs有一定了解4. 对tronasp框架有一定了解5. 对iPress架构有一定了解优势:1. 不开源的oauth2.0 for asp jscript server2. 云端一键登录到所有pj5网站,无需注册3. 实时在线更新升级修复网站源码4. 在线主题和插件的安装,无需手动下载。同时支持一键将主题插件更新到最新。5. 云端消息通知。无论你在哪都能在pj5的网站上收到系统或者粉丝给你的评论留言以及其他类型的通知。比邮件好用。6. 云端博客圈。让你的博客不再孤单,让你有机会了解更多的博客信息,认识更多的博主,以及实时获取到他们的最新文章,评论等等。7. pj5通用头像。远离全球通用头像加载缓慢的问题。8. 强大的插件功能,强大的hook功能,强大的自定义性,以及强大的自定义url规则。9. 有着和wp一样的主题制作模式,让主题更加多样。你也可以将程序制作成非常庞大的cms。总之wp能实现的我们都能实现,而且,我们的功能更加强大
2015年01月02日
2,383 阅读
0 评论
0 点赞
2014-12-25
如何利用开源思想开发一个SEO友好型网站
如何创建一个搜索引擎友好的网站并保持高搜索率?仔细阅读你能找到搜索引擎优化的顶级行业意见。 1. 写出关键词第一步,建立网站关键词,最能描述你们的业务、产品和服务。准备潜在搜索数据列表,然后对关键词进行研究——网上应该有很多能够帮到你的工具,例如 Google 的 Adwords keyword tool 或wordstream。通常情况下,关键词是相关的,拥有低竞争和高搜索量。2. 确定标题标签选择关键词之后,你需要将他们写入到网页的不同地方。这基本是当你的鼠标滑到标签的时候出现在页面上的名称。为了获得最优化效果,你需要传递给搜多引擎尽可能多的名称,确保搜索引擎知道你的网站是什么样子的。标题标签是一种重要的标志。3. 进行Meta说明想要关键词真正的有效,保证他们在你的meta说明中——这是在搜索结果中搜索引擎将对你网站做出的简要总结。提供一个简捷但信息量丰富的描述,网页内的响应消息的举动同样会吸引用户。Meta 描述对网站的 SEO 非常重要。他们需要给你的目标用户引导——你在这里的工作将会吸引人们点击你的链接,而不是你的竞争对手的。4. Robots.txtRobots.txt 文件是保证搜索引擎得到通知:你不想让他们抓取你的特定网页,比如:退出页或者网站的其他有个人信息等需要保密的地方。5. 友好的网址这是一个小细节,但它真的会影响网站的 SEO。网址本身就显示着网站的内容,理想情况下,搜索引擎和用户都应该可以从网址中看出网站的大概。这对电子商务网站尤其重要,这主要由用户体验决定,避免代码,数字和随机数字并保持简洁。6. 使用标题标签标题对 SEO 来说尤其重要——从这里,搜索引擎得到网站的整体感觉和目标。如果你的关键字是无关紧要的,把它放在头条会影响用户体验——人们在页面上停留的时间缩短,而且反弹率会增加。理智的选择关键字,或者解决这个棘手的问题。如果合适,最好将你的关键字放在 H1 中,当然你也可以放在 H2 和 H3 中。记住不要加入太多次关键字——充满关键字的界面很可能被认为是垃圾页面——不仅仅是对用户,搜索引擎也是如此。我们都知道网站被检测含有垃圾页面的后果——惩罚以及即刻下降的流量。7. 优化图片优化图片,需要做两件事情:第一,保证文件名和 ALT 标签含有关键字; 第二:图像较小,不会影响网站的加载时间。用户和可能在加载过程中选择离开。加载时间对 SEO 也很重要——它帮助搜索引擎快速搜索页面。因此,为你的图片加上合适的关键字,放在相应的位置——它们的位置也可以使他们更加 SEO-friendly。8. 优秀的内容有趣的内容是用户和搜索引擎都渴望的。你的主题内容要包含目标关键字——网上有许多工具能帮助你确定你的内容是否充分利用了关键字。有一种说法:每250个字出现一个关键词两次很有效,但是让内容更加自然更加重要。你的文字也应该和 meta 标签和 ALT 标签中数据相关,这能够帮助搜索引擎正确的将你的内容链接到特定的搜索项中。记住不要走极端——全是关键字的文本就是垃圾网页,你知道对一个 SEO 来说垃圾网页是很危险的。9. 301 重定向301是告诉搜索引擎这个页面被永久移动并被新的内容取代的非常好的方式。302不会这么做——他是暂时的,并且不会把页面的权限传递给他人。为了安全起见,还是用301吧。10. 网站地图网站地图对 SEO 很重要——搜索引擎利用他们来进行网页的导航,而且通过你自己的网站地图你的工作也更容易。XML 站点地图和传统的网站地图相比更好,它可以帮助搜索引擎更加简单的浏览并抓取网站的每一页。当页面发生变化时 XML 站点地图也会通知搜索引擎——例如:当你增加了新的内容。11. 重复内容提醒如果你发现网站有重复的内容,立即删除它。搜索引擎很讨厌它,并会因此惩罚你。如果你想从其他网站的内容增加访问量,三思而后行——这可能影响你的搜索结果,是否真的值得。重复的内容并不总导致恶果——他可以是你没考虑到或忘记的失误。如果你有这样的页面,而且他们不会重定向到你的主页,你可能会遇到麻烦: www.my-great-website.com my-great-website.com my-great-website.com/index 产品页面也是一个这样的页面——这里你能发现大量重复的内容。为了避免麻烦,创造独一无二的产品描述,并包括对用户有价值的信息——来自其他客户的评价和支持内容效果会很好。12. 面向社交媒体技术上社交媒体并不是 SEO 的一部分,但是多年来它成为链接应用的显著影响因素。你的营销策略必须包含社交媒体——选择那些用户生成内容(UGC)扮演主要角色的社交网络,像:Facebook,微博,YouTube 或 Digg。将社交媒体的图标放在网站上,让人们分享内容,鼓励别人访问你的网站。13. Microdata的好处Microdata 是一个支持搜索引擎爬虫提供网站内容的代码设计语言。你网站上的 Microdata 代码通知搜索引擎你的网站应该如何被索引和排序。另一个好处是创建“rich snippets”,它能比传统的列表显示更多的信息。14. 设置导航现在,你会认为导航只对用户体验很重要,但实际上在 SEO 中他也发挥着重要的作用。定义结构清晰的结构能够帮助爬虫索引你的网站。避免使用框架或复杂的表格——有时候搜索引擎不能检索到他们,因此这些网页也不会被索引。15. 博客系统博客对 SEO 来说很友好,而且业内专家预测:内容营销将在不久的将来崛起。平台就在那里,分享你的想法和观点吧。在你的网站上建立博客,在网站的博客帖子上分享相关的链接。提供高质量的内容,吸引更多的用户再次使用。16. 正确的响应使用移动设备的人数不断增加,当你设计网站的时候需要将这一点考虑在内。总之,确保响应正确——页面效果不错,在不同尺寸的移动设备上能够正常运行。检查你的网络流量数据,观察到底有多少人通过移动设备访问你的网站,确保你做的事情是对的。当你有一个网站需要去做 SEO 优化的时候,不要期望你的努力能立即得到回报。耐心等待并更正内容营销策略,最终会发现你的网站很受用户欢迎。(英文djdesignerlab,译者yangjianqiao0)
2014年12月25日
2,299 阅读
0 评论
0 点赞
2014-12-09
网站反屏蔽的方法
很多网站管理员可能会遇到这种情况,自己的网站突然之间无法从国内访问了,遇到这种情况后,网站主如何应对,这里就介绍几个站长反屏蔽的常见方法。1、网站使用HTTPS加密连接;使用SSL加密之后,网页内容上的关键字将不会被第三方获取,从而避免了网页存在敏感关键字带来的隐患,使得用户的访问更加安全和稳定。如果预算充足,网站应该尽快提供HTTPS的访问方式。不过其副作用是耗费更多的资源和流量,网站服务器硬件设施也需要增强。2、网站使用多个IP地址;最简单的方式是使用CDN服务,针对不同的国家地区使用不同的IP,这样的一个好处是,即使一个IP无法访问,用户可以通过hosts的方式来修改IP继续访问。3、网站域名和架构简单;网站域名规则简单,所有服务都可使用一个IP地址,这样易于写hosts,易于更换IP地址。4、网站使用多个不同域名;网站除了一个主域名外,应该启用多个“备用”域名,使其同时解析到一个IP上,同时网站使用相对地址,不同域名都可完全访问,这样可以保证多个域名的内容完全同步。这样,一旦一个域名无法访问,可以通过启用新域名新IP的方法来使其恢复访问。5、支持全文RSS阅读;对于内容型网站,应该支持全文RSS,这样用户使用在线阅读器即可阅读到最新的内容,同时RSS具有较强的定制型,可以将RSS内容发布到不同设备或网站上。6、支持邮件订阅。电子邮件是一个不易过滤的系统,特别是国外电子邮件,内容型网站应该邮件订阅,比较简单的方式是通过RSS系统自动触发邮件发布功能,目前有几个服务(FeedBurner、腾讯订阅等)都支持RSS内容自动发送邮件。此外,也可通过一些第三方插件(如WordPress的Mail2Post)来自动发送邮件。
2014年12月09日
2,140 阅读
0 评论
0 点赞
2014-11-17
去掉多说评论版权信息
多说是一款使用性非常广泛的评论插件,不仅功能丰富而且使用也十分简单,你可以设置文章发布绑定新浪微博,实现同步更新,总体来说是非常好用的,但有个问题就是默认情况下,在评论框下方会有个多说的版权信息,有的人并不在意,有的人可能不太喜欢多出的一条版权信息影响页面的整体性。想屏蔽掉这条信息也很简单,先进入到你的wordpress后台,接着再进入多说的个性化设置这个选项,你会看到一个自定义css这个方框,如图所示在框中粘贴该代码保存即可.ds-powered-by {display:none;}
2014年11月17日
2,025 阅读
0 评论
0 点赞
2014-11-16
代码编辑软件---Sublime Text 3
SublimeText 是一个代码编辑器,也是HTML和散文先进的文本编辑器. SublimeText 是由程序员 Jon Skinner 于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim。同时 SublimeText 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。今天软件盒子给大家分享的是SublimeText3中文破解版这款软件,软件已破解,请放心使用。SublimeText具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等.还可自定义键绑定,菜单和工具栏.SublimeText 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等.Sublime Text(代码编辑神器) v3.3038 简体中文优化注册版的主要特点:1、深度整合GBK编码,可以完美支持GBK编码文件。2、去除自动检测升级提示。3、自动换行功能。4、安装Emmet(Zen Coding)插件.5、调整字体大小为11px以适合正常人使用习惯。6、软件已注册。Sublime Text 3常用快捷键(可以收集起来备用)Ctrl+D 选词 (反复按快捷键,即可继续向下同时选中下一个相同的文本进行同时编辑)Ctrl+G 跳转到相应的行Ctrl+J 合并行(已选择需要合并的多行时)Ctrl+L 选择整行(按住-继续选择下行)Ctrl+M 光标移动至括号内开始或结束的位置Ctrl+T 词互换Ctrl+U 软撤销Ctrl+P 查找当前项目中的文件和快速搜索;输入 @ 查找文件主标题/函数;或者输入 : 跳转到文件某行;Ctrl+R 快速列出/跳转到某个函数Ctrl+K Backspace 从光标处删除至行首Ctrl+K+B 开启/关闭侧边栏Ctrl+KK 从光标处删除至行尾Ctrl+K+T 折叠属性Ctrl+K+U 改为大写Ctrl+K+L 改为小写Ctrl+K+0 展开所有Ctrl+Enter 插入行后(快速换行)Ctrl+Tab 当前窗口中的标签页切换Ctrl+Shift+A 选择光标位置父标签对儿Ctrl+Shift+D 复制光标所在整行,插入在该行之前ctrl+shift+F 在文件夹内查找,与普通编辑器不同的地方是sublime允许添加多个文件夹进行查找Ctrl+Shift+K 删除整行Ctrl+Shift+L 鼠标选中多行(按下快捷键),即可同时编辑这些行Ctrl+Shift+M 选择括号内的内容(按住-继续选择父括号)Ctrl+Shift+P 打开命令面板Ctrl+Shift+/ 注释已选择内容Ctrl+Shift+↑可以移动此行代码,与上行互换Ctrl+Shift+↓可以移动此行代码,与下行互换Ctrl+Shift+[ 折叠代码Ctrl+Shift+] 展开代码Ctrl+Shift+Enter 光标前插入行 下载地址:http://dl2.cr173.com/soft2/SublimeText3_ha.zip
2014年11月16日
5,145 阅读
0 评论
0 点赞
2014-11-15
慕课网一些css定位学习笔记
这两天发现一慕课网,里面的视频教学对我这种只会一些CSS的人来说,太有用了。特将一些笔记及演示摘抄下来,方便以后温故学习。一些演示连接。https://cmsblog.cn/pp/vip.htmlhttps://cmsblog.cn/pp/center-r.htmlhttps://cmsblog.cn/pp/zhuche.htmlhttps://cmsblog.cn/pp/float-r-g.html
2014年11月15日
4,309 阅读
0 评论
0 点赞
2014-11-13
CSS横竖排格式化工具
每次扒皮,发现好多CSS代码是横写着的,可我喜欢竖着看,发现网上有这样的工具,赶紧收集一份先。 演示地址:https://cmsblog.cn/pp/css.html 源码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>css横排竖排工具</title> <style> .toolarea {width:800px;height:300px;outline:none;padding:10px;border:5px solid #ddd;} .bt {width:150px;height:40px;} </style> </head> <body> <!-- /工具开始 --> <script language=JavaScript> <!-- function $() { var elements = new Array(); for (var i = 0; i < arguments.length; i++) { var element = arguments[i]; if (typeof element == 'string') element = document.getElementById(element); if (arguments.length == 1) return element; elements.push(element); } return elements; } function CSSencode(code){ code = code.replace(/\r\n/ig,''); code = code.replace(/(\s){2,}/ig,'$1'); code = code.replace(/\t/ig,''); code = code.replace(/\n\}/ig,'\}'); code = code.replace(/\n\{\s*/ig,'\{'); code = code.replace(/(\S)\s*\}/ig,'$1\}'); code = code.replace(/(\S)\s*\{/ig,'$1\{'); code = code.replace(/\{\s*(\S)/ig,'\{$1'); return code; } function CSSdecode(code){ code = code.replace(/(\s){2,}/ig,'$1'); code = code.replace(/(\S)\s*\{/ig,'$1 {'); code = code.replace(/\*\/(.[^\}\{]*)}/ig,'\*\/\n$1}'); code = code.replace(/\/\*/ig,'\n\/\*'); code = code.replace(/;\s*(\S)/ig,';\n\t$1'); code = code.replace(/\}\s*(\S)/ig,'\}\n$1'); code = code.replace(/\n\s*\}/ig,'\n\}'); code = code.replace(/\{\s*(\S)/ig,'\{\n\t$1'); code = code.replace(/(\S)\s*\*\//ig,'$1\*\/'); code = code.replace(/\*\/\s*([^\}\{]\S)/ig,'\*\/\n\t$1'); code = code.replace(/(\S)\}/ig,'$1\n\}'); code = code.replace(/(\n){2,}/ig,'\n'); code = code.replace(/:/ig,':'); code = code.replace(/ /ig,' '); return code; } //--> </script> <div style="width:820px;margin:0 auto;"> <h3>css格式化工具</h3> <textarea class="toolarea" id="code"></textarea><br/><br/> <input class="bt lvse" onclick="$('code').value = CSSencode($('code').value);" value="横排" type="button" /> <input class="bt lanse" onclick="$('code').value = CSSdecode($('code').value);" value="竖排" type="button" /> </div> </body> </html>
2014年11月13日
4,464 阅读
0 评论
0 点赞
2014-11-11
论坛转贴工具在线版
以前经常逛论坛,转贴子,有个论坛转贴工具在手,神马都变简单了。关键是代码可以变简洁了。在线网址:https://cmsblog.cn/pp/zt.html源码如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB2312" /> <title>论坛转帖工具</title> <script language=javascript> <!-- function SymError() { return true; } window.onerror = SymError; //--> </script> <script language="javascript1.2"> function delnull(){ var str=document.getElementById('text').value; str=str.replace(/([\s]*\r\n[\s]*){2,}/gm,"\r\n"); document.getElementById('text').value=str; } function refix(){ var str=document.getElementById('text').value; str=str.replace(/([\s]*\r\n[\s]*){2,}/gm,"\r\n\r\n"); document.getElementById('text').value=str; } function url(){ var str=document.getElementById('text').value; str=str.replace(/^[ ]*(http:\/\/|^mms:\/\/|rtsp:\/\/|pnm:\/\/|ftp:\/\/|mmst:\/\/|mmsu:\/\/)([^\r\n]*)$/igm,"[url]$1$2[/url]"); document.getElementById('text').value=str; } function addbr(){ var str=document.getElementById('text').value; str=str.replace(/\r\n/gm,"\r\n\r\n"); document.getElementById('text').value=str; } function html_trans(str){ str = str.replace(/\r/g,""); str = str.replace(/on(load|click|dbclick|mouseover|mousedown|mouseup)=("|')?[^>]+?\2(?: |>)/ig,""); str = str.replace(/<script[^>]*?>([\w\W]*?)<\/script>/ig,""); if(set.fontbash.checked){ str = str.replace(/<span[^>]*?display\s*?:\s*?none[^>]*?>([\w\W]*?)<\/span>/ig,""); str = str.replace(/<span[^>]*?font\s*?-\s*?size\s*?:\s*(0px|0pt)[^>]*?>([\w\W]*?)<\/span>/ig,""); str = str.replace(/<font([^>]+)(0px|0pt)+([^>]*)>([\w\W]*?)<\/font>/ig,""); } if(set.filtrate.checked){ str = str.replace(/[^<]*<([^>]*?)>[^<]*/ig,"<$1>"); var re = /<img[^>]+src=("|')?([^>]+?)\1[^>]*>/gi //var re = new RegExp(strtm,"ig"); str = str.replace(re,"[img]$2[/img]\r\n\r\n"); } else{ if(set.stext.checked) str = str.replace(/[^<]*<([^>]*?)>[^<]*/ig,"<$1>"); if(!set.linka.checked) str = str.replace(/<a[^>]+href=[" ]?([^"]+)[" ]?[^>]*>(.*?)<\/a>/ig,"[url=$1]$2[/url]"); if(!set.font_color.checked&&!set.stext.checked) str = str.replace(/<font([^>]+)color=([^ >]+)([^>]*)>(.*?)<\/font>/ig,"[color=$2]<font$1$3>$4</font>[/color]"); if(!set.font_size.checked&&!set.stext.checked) str = str.replace(/<font([^>]+)size=([^ >]+)([^>]*)>(.*?)<\/font>/ig,"[size=$2]<font$1$3>$4</font>[/size]"); if(!set.font_face.checked&&!set.stext.checked) str = str.replace(/<font[^>]+face=([^ >]+)[^>]*>(.*?)<\/font>/ig,"[font=$1]$2[/font]"); if(!set.img.checked) str = str.replace(/<img[^>]+src=[" ]?([^"]+)[" ]?[^>]*>/ig,"\n[img]$1[/img]\n"); if(!set.odj.checked){ str = str.replace(/<object[^>]*?6BF52A52\-394A\-11d3\-B153\-00C04F79FAA6[^>]*?>.*<param[^>]+name\s*=\s*["](url|src)["][^>]+value=[" ]?([^"]+)[" ][^>]*>.*<\/object>/ig,"\n[wmv]$2[/wmv]\n"); str = str.replace(/<object[^>]*?D27CDB6E\-AE6D\-11cf\-96B8\-444553540000[^>]*?>.*<param[^>]+name\s*=\s*["](url|src)["][^>]+value=[" ]?([^"]+)[" ][^>]*>.*<\/object>/ig,"\n[swf]$2[/swf]\n"); str = str.replace(/<embed[^>]*type=["]?application\/x\-shockwave\-flash["]?[^>]*src=[" ]?([^"|^ ]+)[" ]?[^>]*>/ig,"\n[swf]$1[/swf]\n"); str = str.replace(/<embed[^>]*src=["]?([^"|^ ]+)["]?[^>]*type=["]?application\/x\-shockwave\-flash["]?[^>]*>/ig,"\n[swf]$1[/swf]\n"); str = str.replace(/<object[^>]*?CFCDAA03\-8BE4\-11cf\-B84B\-0020AFBBCCFA[^>]*?>.*<param[^>]+name\s*=\s*["](url|src)["][^>]+value=[" ]?([^"]+)[" ][^>]*>.*<\/object>/ig,"\n[rm]$2[/rm]\n"); } if(!set.font_b.checked&&!set.stext.checked){ str = str.replace(/<([\/]?)b>/ig,"[$1b]"); str = str.replace(/<([\/]?)strong>/ig,"[$1b]");} if(!set.font_u.checked&&!set.stext.checked) str = str.replace(/<([\/]?)u>/ig,"[$1u]"); if(!set.font_i.checked&&!set.stext.checked) str = str.replace(/<([\/]?)i>/ig,"[$1i]"); str = str.replace(/ /g," "); str = str.replace(/&/g,"&"); str = str.replace(/"/g,"\""); str = str.replace(/</g,"<"); str = str.replace(/>/g,">"); } str = str.replace(/<br>/ig,"\n"); str = str.replace(/<p[^>]*?>/ig,"\n\n"); str = str.replace(/<[^>]*?>/g,""); str = str.replace(/\[url=([^\]]+)\]\n(\[img\]\1\[\/img\])\n\[\/url\]/g,"$2"); str = str.replace(/\n+/g,"\n"); return str; } function copycode(obj){ obj.select(); objcopy=obj.createTextRange(); objcopy.execCommand("Copy"); } function trans(){ var str = ""; rtf.focus(); rtf.document.body.innerHTML = ""; rtf.document.execCommand("paste"); str = rtf.document.body.innerHTML; if(str.length == 0) { alert("剪贴版不存在超文本数据!"); return ""; } return html_trans(str); } function preview(){ var s = document.getElementById('text').value; var prewin=window.open("","",""); prewin.document.write(bbcode2html(s)); } function zhen(str){ strfound=str.replace(/\\/ig,"\\\\"); strfound=strfound.replace(/\[/ig,"\\["); strfound=strfound.replace(/\]/ig,"\\]"); strfound=strfound.replace(/\{/ig,"\\{"); strfound=strfound.replace(/\}/ig,"\\}"); strfound=strfound.replace(/\|/ig,"\\|"); strfound=strfound.replace(/\//ig,"\\/"); strfound=strfound.replace(/\^/ig,"\\^"); strfound=strfound.replace(/\./ig,"\\."); strfound=strfound.replace(/\*/ig,"\\*"); strfound=strfound.replace(/\?/ig,"\\?"); strfound=strfound.replace(/\+/ig,"\\+"); return strfound; } function replace_star(){ var str=document.getElementById('text').value; if(!reg.checked) strfound=zhen(find_text.value); else strfound=find_text.value; var re = new RegExp(strfound,"ig"); str=str.replace(re,replace_text.value); document.getElementById('text').value=str; } </script> </head> <body> <table cellspacing="0" cellpadding="0" width="770" align="center" border="0"> <tr valign="bottom" align="left"> <td class="title" align="left"><b>cmsblog.cn 沉默的博客</b></td> <td class="smenu" align="right"><a class="white" href="https://cmsblog.cn" target="_blank"><b>沉默的博客</b></a></td> </tr> <tr valign="top" align="left"> <td colspan="2"> <hr width="100%" size="1"> </td> </tr> </table> <br/> <table border="1" bordercolor="#6699CC" cellspacing="0" width="700" align="center" cellpadding="2"> <tr height=10><td bgcolor="#6699CC" align="center"><font color="#FFFFFF"><b>论坛转帖工具</b></font> <a class="a1" href="javascript:window.external.addfavorite('https://cmsblog.cn/pp/zt.html', '论坛转帖工具')">←【加入收藏夹】</a></td></tr> <tr> <td align=middle bgcolor=#f6f6f6> <textarea class=textarea onbeforepaste="if(document.getElementById('x_paste').checked){window.clipboardData.setData('text',trans());this.focus();}" id=text style="width:580px;height:200px" name=textarea rows=1 cols=100></textarea> <iframe id=rtf style="width:0px;height:0px" marginWidth=0 marginHeight=0 src="about:blank" scrolling=no></iframe> <label for=x_paste></label> <table borderColor=#f6f6f6 cellSpacing=1 width=600 align=center border=0> <tr valign=center align=middle> <td width=80 height=44><input style="width:80px;height:40px" onclick="document.getElementById('text').value += trans();" type=button value=转换(追加) name=button></td> <td width=80><input style="width:80px;height:40px" onclick="document.getElementById('text').value = trans()" type=button value=转换(覆盖) name=button></td> <td width=85><input style="width:95px;height:40px" onclick=copycode(window.text) type=button value=复制到剪贴板></td> <td width=85> <table cellSpacing=2 cellPadding=0 width=0 border=0> <tr> <td><input style="width:85px;height:20px" onclick="preview()" type="button" value="预览帖子"></td> </tr> <tr> <td><input style="width:85px;height:20px" onclick="document.getElementById('text').value=''" type=button value="清空内容"></td> </tr> </table> </td> <td width=170> <table cellSpacing=2 cellPadding=0 width="100%" border=0> <tr> <td><input title="自动分析所有超链接,并转换成超链接格式 注意:超链接必须单独在一行中!" style="width:80px;" onclick=url() type=button value=分析超链接 name=Submit></td> <td><input title="紧凑格式,删除所有空行" style="width:80px;" onclick=delnull() type=button value=清除空行 name=Submit></td> </tr> <tr> <td><input title="清除多余的空行,保持最一个空行" style="width:80px;" onclick=refix() type=button value=清除多余 name=Submit></td> <td><input title="为每一行(包括空行)增加一空行" style="width:80px;" onclick=addbr() type=button value=增加空行 name=Submit></td> </tr> </table> </td> </tr> </table> <table cellSpacing=5 cellPadding=0 width=620 border=0> <form name=set> <tr align="left"> <td title=转换的结果中将不含有图片信息 width="120" height=20><label for=img><input id=img type=checkbox>屏蔽图片</label></td> <td title=转换的结果中将不含有链接信息 width="120"><label for=linka><input id=linka type=checkbox>屏蔽超链接</label></td> <td title=转换的结果中将不含音频、视频、FLASH等信息 width="120"><label for=odj><input id=odj type=checkbox>屏蔽对象</label></td> <td title=转换的结果中将不含文本信息,同时字体属性将被自动屏蔽 width="120"><label for=stext><input id=stext type=checkbox>屏蔽文字</label></td> <td title="为了方便帖子的阅读,强制把图片用空行隔开" width="120"><label for=filtrate><input id=filtrate onclick="if(this.checked)window.base_url.style.display='block';else window.base_url.style.display='none';" type=checkbox>启用图片过滤</label></td> </tr><tr align="left"> <td title=屏蔽所有定字体相关的属性><label for=font><input id=font onclick=font_color.checked=this.checked;font_size.checked=this.checked;font_face.checked=this.checked;font_b.checked=this.checked;font_i.checked=this.checked;font_u.checked=this.checked; type=checkbox>屏蔽字体属性</label></td> <td title=屏蔽所有定字体相关的属性><label><input id=fontbash type=checkbox CHECKED value=checkbox>屏蔽干扰码</label></td> <td title=转换的结果中将不含有字体颜色信息><label for=font_color><input id=font_color type=checkbox>屏蔽字颜色</label></td> <td title=转换的结果中将不含有字体尺寸信息><label for=font_size><input id=font_size type=checkbox>屏蔽字体尺寸</label></td> <td title=转换的结果中将不含有字体类型信息><label for=font_face><input id=font_face type=checkbox>屏蔽字体类型</label></td> </tr><tr align="left"> <td title=转换的结果中将不含有粗体信息><label for=font_b><input id=font_b type=checkbox>屏蔽粗体</label></td> <td title=转换的结果中将不含有斜体信息><label for=font_i><input id=font_i type=checkbox>屏蔽斜体</label></td> <td title=转换的结果中将不含有下划线信息><label for=font_u><input id=font_u type=checkbox>屏蔽下划线</label></td> <td> </td> <td> </td> </tr> </form> </table> <table id="base_url" style="display: none;" border="0" cellpadding="2" cellspacing="0" width="100%"> <tr> <td align="left" style="padding-left:30px"><font color="#006600">仅保留图片,图片之间换行隔开</font><hr color="#000000" size="1" width="100%"> </td> </tr> </table> <table borderColor=#efefef cellSpacing=2 cellPadding=2 width=600 bgcolor=#f6f6f6 border=0> <tr> <td>查找 <input id=find_text size=36 name=find_text></td> <td width="60"><input onclick="set.reset();find_text.value='';replace_text.value='';window.textfield.value='';" type=button value=恢复默认 name=submit></td> <td width="140" rowspan=2 align=middle><label for=reg><input id=reg type=checkbox checked value=1 name=reg>使用正则语法</label></td> </tr> <tr> <td>替换 <input id=replace_text size=36 name=replace_text></td> <td><input onclick=replace_star() type=button value="开始替换" name=submit></td> </tr> </table> </td> </tr> <tr bgcolor=#f8f8f8> <td> <table cellSpacing=0 cellPadding=0 width=600 align=center border=0> <tr> <td><p><b>转贴工具使用说明:</b><br> 1.在网页中拖动鼠标选中你想要的图片或文字,然后鼠标右键“复制(C)”或按Ctrl+C。<br> 2.进入该页面,直接按下“转换(追加)”或者“转换(覆盖)”。<br> 3.点击“复制到剪贴板”,将代码复制到剪贴板。<br> 4.进入论坛发贴页面,鼠标右键“粘贴(P)”或按Ctrl+V将帖子内容复制到帖子内容框。</p> </td> </tr> </table> </td> </tr> </table> <script> rtf.document.designMode="On"; </script> <br> </body> </html>
2014年11月11日
2,349 阅读
0 评论
0 点赞
2014-10-22
Emlog修改模版一些常用代码
Emlog随机查看文章<?php //随便看看 function sbkk_logs() { $db = MySql::getInstance(); $sql = "SELECT gid FROM ".DB_PREFIX."blog WHERE type='blog' and hide='n' ORDER BY rand() LIMIT 0,1"; $sbkk_logs_list = $db->query($sql); while($row = $db->fetch_array($sbkk_logs_list)){ echo Url::log($row['gid']); } } ?> 调用方式: <a href="<?php sbkk_logs();?>">随便看看</a> Emlog按天数时间调用随机热门文章列表<?php //30天按点击率排行文章 function getdatelogs($log_num) { $a=""; $b=1; $c=""; $d=1; $db = MySql::getInstance(); $time = time(); $sql = "SELECT gid,title,views,comnum FROM ".DB_PREFIX."blog WHERE type='blog' AND date > $time - 30*24*60*60 ORDER BY `views` DESC LIMIT 0,$log_num"; $list = $db->query($sql); while($row = $db->fetch_array($list)){ ?> <li><p class="text-muted"><span class="post-comments">评论 (<?php echo $row['comnum']; ?>)</span><a class="post-like"> ℃ (<span><?php echo $row['views']; ?></span>)</a></p><span class="label label-<?php echo $c+$d++;?>"><?php echo $a+$b++;?></span><a href="<?php echo Url::log($row['gid']); ?>" title="<?php echo $row['title']; ?>"><?php echo $row['title']; ?></a></li> <?php } ?> <?php } ?> 调用方式: <?php getdatelogs('5');?>“5”是显示数量,30*24*60*60为30天,如要改成7天只需要把30改为7即可,一年就改成365即可。Emlog实现最新文章标题加摘要显示代码<?php //首页置顶头条 function getZhidingLogs() { $db = MySql::getInstance(); $sql = "SELECT gid,title,content,date FROM ".DB_PREFIX."blog WHERE type='blog' and top='y' ORDER BY `top` DESC ,`date` DESC LIMIT 0,1"; $list = $db->query($sql); while($row = $db->fetch_array($list)){ //$row['content'] = htmlspecialchars($row['content']); $row['content'] = strip_tags($row['content']);?> <h1><a href="<?php echo Url::log($row['gid']); ?>" title="<?php echo $row['title']; ?>" target="_blank"><?php echo $row['title']; ?></a></h1> <span class="note"><?php echo mb_substr($row['content'],0,85,'utf-8'); ?>...</span><a href="<?php echo Url::log($row['gid']); ?>" class="font2_2" target="_blank">阅读全文>></a> <?php } ?> <?php } ?> 在需要的地方使用<?php getZhidingLogs();?>调用,输出摘要文字字数请自行修改<?php echo mb_substr($row['content'],0,85,'utf-8');?>这段代码中,中间的85为字数,自己根据需要调整。Emlog两串美化代码判断时间<?php $t=time() - 3*24*60*60; $log_t=gmdate('Y-m-d',$$value['date']); $diy_t=date("Y-m-d",$t); if($log_t > $diy_t) echo '<img src="new.png" alt="newico" />'; ?>判断浏览量<?php if ($value['views'] >= 100) echo '<img src="hot.png" alt="hotico" />'; ?> Emlog狂欢一下特效这个不好讲,请直接访问http://lanyes.org/zuopin/615.html查看吧Emlog所有标签列表代码<?php require_once 'init.php'; define('TEMPLATE_PATH', TPLS_PATH.Option::get('nonce_templet').'/'); $CACHE = Cache::getInstance(); $options_cache = $CACHE->readCache('options'); extract($options_cache); $navibar = unserialize($navibar); $curpage = CURPAGE_HOME; $site_title = '所有标签列表 - '.Option::get('blogname'); $site_key = '博客标签列表'; $site_description = '博客所有标签列表页面'; include View::getView('header'); ?> <div style="background:#fff;padding:10px;display: table;height:100%"> <div style="font-size:16px;padding-bottom:5px;margin-bottom:10px;color:#0C3;border-bottom:1px solid #00aff0"> 现在位置:<a title="返回首页" href="<?php echo BLOG_URL; ?>">首页</a> ? 所有标签列表 </div> <ul> <?php global $CACHE; $tag_cache = $CACHE->readCache('tags'); ?> <?php foreach($tag_cache as $value): ?> <li style="white-space:nowrap;margin:0 10px 10px 0;float:left"> <span style="font-size:<?php echo $value['fontsize']; ?>pt; line-height:30px;border: 1px dashed #CCC;padding: 5px;border-radius: 10px;display: block;"> <a style="color:#<?php echo dechex(rand(0,16777215));?>" href="<?php echo Url::tag($value['tagurl']); ?>" title="<?php echo $value['usenum']; ?> 篇日志"> <?php echo $value['tagname']; ?>(<?php echo $value['usenum']; ?>) </a> </span> </li> <?php endforeach; ?> </ul> </div> <div style="clear:both"></div> <?php include View::getView('footer');?> 使用方式:在您网站的根目录下创建一个tag.php文件,然后访问即可,“tag”可以更好为您要的名字,这个随意EMLOG调用指定多个分类文章列表代码<?php function Get_newlogs($log_num) { $db = MySql::getInstance(); $sql = "SELECT gid,title,date,content,views FROM ".DB_PREFIX."blog WHERE type='blog' and hide='n' and sortid IN (1,2,3,4) ORDER BY `date` DESC LIMIT 0,$log_num"; $list = $db->query($sql); while($row = $db->fetch_array($list)){ ?> <li><a href="<?php echo Url::log($row['gid']); ?>"><?php echo $row['title']; ?></a></li> <?php } ?> <?php } ?> 调用方式: <?php Get_newlogs(5);?>代码中的5表示需要输出的文章列表条数。 Emlog自动获取网站Favicon图标代码并自动保存<?php //获取友链favicon站标 function favicon_file($site_url){ $site_url = strtolower(rtrim($site_url,'/')); $site_md5 = md5($site_url); $fav_url = TEMPLATE_URL.'favicon/'; $fav_path = TEMPLATE_PATH.'favicon/'; $t = 2592000; //30天,单位:秒 if(!is_file($fav_path.$site_md5.'.png') || (time() - filemtime($fav_path.$site_md5.'.png')) > $t) { copy('http://www.google.com/s2/favicons?domain='.str_replace('http://','',$site_url),$fav_path.$site_md5.'.png'); } return $fav_url.$site_md5.'.png'; }?> 调用方式: <?php echo favicon_file($value['url']); ?>Emlog评论实现IP显示<?php function convertip($ip){ $dat_path = EMLOG_ROOT . '/content/templates/xiu/ip.dat'; //*数据库路径*// if (!($fd = @fopen($dat_path, 'rb'))) { return 'IP数据库文件不存在或者禁止访问或者已经被删除!'; } $ip = explode('.', $ip); $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3]; $DataBegin = fread($fd, 4); $DataEnd = fread($fd, 4); $ipbegin = implode('', unpack('L', $DataBegin)); if ($ipbegin < 0) { $ipbegin += pow(2, 32); }$ipend = implode('', unpack('L', $DataEnd)); if ($ipend < 0) { $ipend += pow(2, 32); } $ipAllNum = ($ipend - $ipbegin) / 7 + 1; $BeginNum = 0; $EndNum = $ipAllNum; while ($ip1num > $ipNum || $ip2num < $ipNum) { $Middle = intval(($EndNum + $BeginNum) / 2); fseek($fd, $ipbegin + 7 * $Middle); $ipData1 = fread($fd, 4); if (strlen($ipData1) < 4) { fclose($fd); return '系统出错!'; } $ip1num = implode('', unpack('L', $ipData1)); if ($ip1num < 0) { $ip1num += pow(2, 32); } if ($ip1num > $ipNum) { $EndNum = $Middle; continue; } $DataSeek = fread($fd, 3); if (strlen($DataSeek) < 3) { fclose($fd); return '系统出错!'; } $DataSeek = implode('', unpack('L', $DataSeek . chr(0))); fseek($fd, $DataSeek); $ipData2 = fread($fd, 4); if (strlen($ipData2) < 4) { fclose($fd); return '系统出错!'; } $ip2num = implode('', unpack('L', $ipData2)); if ($ip2num < 0) { $ip2num += pow(2, 32); } if ($ip2num < $ipNum) { if ($Middle == $BeginNum) { fclose($fd); return '未知'; } $BeginNum = $Middle; } } $ipFlag = fread($fd, 1); if ($ipFlag == chr(1)) { $ipSeek = fread($fd, 3); if (strlen($ipSeek) < 3) { fclose($fd); return '系统出错!'; } $ipSeek = implode('', unpack('L', $ipSeek . chr(0))); fseek($fd, $ipSeek); $ipFlag = fread($fd, 1); } if ($ipFlag == chr(2)) { $AddrSeek = fread($fd, 3); if (strlen($AddrSeek) < 3) { fclose($fd); return '系统出错!'; } $ipFlag = fread($fd, 1); if ($ipFlag == chr(2)) { $AddrSeek2 = fread($fd, 3); if (strlen($AddrSeek2) < 3) { fclose($fd); return '系统出错!'; } $AddrSeek2 = implode('', unpack('L', $AddrSeek2 . chr(0))); fseek($fd, $AddrSeek2); } else { fseek($fd, -1, SEEK_CUR); } while (($char = fread($fd, 1)) != chr(0)) { $ipAddr2 .= $char; } $AddrSeek = implode('', unpack('L', $AddrSeek . chr(0))); fseek($fd, $AddrSeek); while (($char = fread($fd, 1)) != chr(0)) { $ipAddr1 .= $char; } } else { fseek($fd, -1, SEEK_CUR); while (($char = fread($fd, 1)) != chr(0)) { $ipAddr1 .= $char; } $ipFlag = fread($fd, 1); if ($ipFlag == chr(2)) { $AddrSeek2 = fread($fd, 3); if (strlen($AddrSeek2) < 3) { fclose($fd); return '系统出错!'; } $AddrSeek2 = implode('', unpack('L', $AddrSeek2 . chr(0))); fseek($fd, $AddrSeek2); } else { fseek($fd, -1, SEEK_CUR); } while (($char = fread($fd, 1)) != chr(0)) { $ipAddr2 .= $char; } } fclose($fd); if (preg_match('/http/i', $ipAddr2)) { $ipAddr2 = ''; } $ipaddr = "{$ipAddr1} {$ipAddr2}"; $ipaddr = preg_replace('/CZ88.Net/is', '', $ipaddr); $ipaddr = preg_replace('/^s*/is', '', $ipaddr); $ipaddr = preg_replace('/s*$/is', '', $ipaddr); if (preg_match('/http/i', $ipaddr) || $ipaddr == '') { $ipaddr = '未知'; } $ipaddr = iconv('gbk', 'utf-8//IGNORE', $ipaddr); if ($ipaddr != ' ') { return $ipaddr; } else { $ipaddr = '评论者来自火星,无法或者其所在地!'; } return $ipaddr; } ?> 调用方式: <?php echo convertip($comment['ip']); ?>,ip.dat自己从纯真官网下载好了 Emlog评论显示系统浏览器及用户操作系统请使用http://www.emlog.net/plugin/164插件1、下载插件并解压;2、上传至emlog插件根目录并后台激活此插件;3、打开你所用模板中的module.php,找到评论列表模块和子评论列表模块,在foreach和endforeach之间的合适位置插入一段显示浏览器和操作系统的代码。以官方模板为例:找到评论列表模块和子评论列表模块的<?php echo $comment['poster']; ?>,在这之后1.0~1.1版添加:<?php if(function_exists('display_useragent')){display_useragent($comment['cid']);} ?>1.2版以后添加:<?php if(function_exists('display_useragent')){display_useragent($comment['cid'],$comment['mail']);} ?>Emlog获取制定分类文章及数量<?php //调用主分类和子分类文章 function lonewolf_getlogs($sortid,$log_num) { $db = MySql::getInstance(); $sql = "SELECT gid,title,date FROM ".DB_PREFIX."blog WHERE type='blog' and hide='n' and sortid in (".lonewolf_getsortids($sortid).") ORDER BY `date` DESC LIMIT 0,$log_num"; $list = $db->query($sql); while($row = $db->fetch_array($list)){ ?> <li><span><?php $log_t=gmdate('Y-m-d',$row['date']);echo $log_t;?></span><i>+</i><a title="<?php echo $row['title'];?>" href="<?php echo Url::log($row['gid']);?>"><?php echo $row['title'];?></a></li> <?php } } ?> 调用方式: <?php lonewolf_getlogs(1,16);?>“1”为分类ID,“16”为显示数量 Emlog日志列表文字显示限制<?php $logdes = blog_tool_purecontent($value['content'], 178);?> 调用方式: <?php echo $logdes; ?>,178就是显示数量 Emlog首页置顶代码<?php //首页置顶日志 function Home_Top_Logs() { $db = MySql::getInstance(); $sql = "SELECT gid,title,content,date FROM ".DB_PREFIX."blog WHERE type='blog' and top='y' ORDER BY `top` DESC ,`date` DESC LIMIT 0,12"; $list = $db->query($sql); while($row = $db->fetch_array($list)){ ?> <li><img src="<?php get_thum($row['gid']);?>" width="220" height="125" alt="<?php echo $row['title'];?>" /><div class="logtitle"><?php echo $row['title'];?></div><div class="logtouming"></div><div class="logbackground"><a href="<?php echo Url::log($row['gid']);?>"></a></div><div class="hot"></div></li> <?php } ?> <?php } ?> 调用方式: <?php Home_Top_Logs();?>Emlog判断分类输出子分类ID号<?php //判断分类输出子分类ID号 function getsortids($sortid){ global $CACHE; $sort_cache = $CACHE->readCache('sort'); $sort = $sort_cache[$sortid]; if ($sort['pid'] != 0 || empty($sort['children'])) { $fenlei_ids = $sortid; } else { $sortids = array_merge(array($sortid), $sort['children']); $fenlei_ids = implode(',', $sortids); } return $fenlei_ids; }?> Emlog分类置顶代码<?php //分类置顶日志 function Sort_Top_Logs($sortid) { $db = MySql::getInstance(); $sql = "SELECT gid,title,content,date,sortid FROM ".DB_PREFIX."blog WHERE type='blog' and sortop='y' and sortid in (".getsortids($sortid).") ORDER BY `sortop` DESC ,`date` DESC LIMIT 0,4"; $list = $db->query($sql); while($row = $db->fetch_array($list)){ ?> <li><img src="<?php get_thum($row['gid']);?>" width="220" height="125" alt="<?php echo $row['title'];?>" /><div class="logtitle"><?php echo $row['title'];?></div><div class="logtouming"></div><div class="logbackground"><a href="<?php echo Url::log($row['gid']);?>"></a></div><div class="hot"></div></li> <?php } ?> <?php } ?> 调用方式: <?php Sort_Top_Logs($sortid);?> Emlog获取文章缩略图<?php //获取文章缩略图 function get_thum($logid){ $db = MySql::getInstance(); $thum_pic = EMLOG_ROOT.'/thumpic/'.$logid.'.jpg'; if (is_file($thum_pic)) { $thum_url = BLOG_URL.'thumpic/'.$logid.'.jpg'; }else{ $sqlimg = "SELECT * FROM ".DB_PREFIX."attachment WHERE blogid=".$logid." AND (`filepath` LIKE '%jpg' OR `filepath` LIKE '%gif' OR `filepath` LIKE '%png') ORDER BY `aid` ASC LIMIT 0,1"; $img = $db->query($sqlimg); while($roww = $db->fetch_array($img)){ $thum_url=BLOG_URL.substr($roww['filepath'],3,strlen($roww['filepath'])); } if (empty($thum_url)) { srand((double)microtime()*1000000); $randval = rand(0,8); $thum_url = BLOG_URL.'content/templates/xiu/images/rand/'.$randval.'.jpg'; } } echo $thum_url; } ?> Emlog调用网站统计代码日志总数:<?php echo $sta_cache['lognum'];?>评论总数:<?php echo $sta_cache['comnum_all'];?>碎语总数:<?php echo $sta_cache['twnum'];?>运行时间:<?php echo floor((time()-strtotime("2014-01-30"))/86400); ?>2014-01-30替换为您博客开始时间选择在侧边栏显示站点统计,把以上代码添加到模板文件(side.php)对应位置可以了。也可使用小劣开发的EMLOG统计插件(飞机票:http://www.emlog.net/plugin/172)Emlog日志列表显示图片(文章有图则显示文章图)<?php if(pic_thumb($value['content'])){ $imgsrc = pic_thumb($value['content']); }else $imgsrc = TEMPLATE_URL.'images/'.rand(1,40).'.jpg'; ?> 调用方式: <?php echo $imgsrc; ?> Emlog评论头像显示图片<?php $heads=array("img/logcmt/01.jpg"=>"01","img/logcmt/02.jpg"=>"02","img/logcmt/03.jpg"=>"03","img/logcmt/04.jpg"=>"04","img/logcmt/05.jpg"=>"05","img/logcmt/06.jpg"=>"06","img/logcmt/07.jpg"=>"07","img/logcmt/08.jpg"=>"08","img/logcmt/09.jpg"=>"09","img/logcmt/10.jpg"=>"10","img/logcmt/11.jpg"=>"11","img/logcmt/12.jpg"=>"12","img/logcmt/13.jpg"=>"13","img/logcmt/14.jpg"=>"14"); ?> <?php if(empty($comment['mail'])){ echo TEMPLATE_URL;echo array_rand($heads);}else{echo getGravatar($comment['mail']);} ?> Emlog头像缓存<?php function get_avatar($mail,$alt,$size = '60',$default='wavatar'){ $alt = strip_tags($alt); $email_md5=md5(strtolower($mail));//通过MD5加密邮箱 $cache_path=TEMPLATE_PATH."cache"; //缓存文件夹路径,需要换上你的主题目录名称 if(!file_exists($cache_path)) { mkdir($cache_path,0700); } $avatar_url=TEMPLATE_URL."cache/".$email_md5.'.jpg'; //头像相对路径 $avatar_abs_url=$cache_path."/".$email_md5.'.jpg'; //头像绝对路径 $cache_time=24*3600*7; //缓存时间为7天 if (empty($default)) $default = $cache_path. '/default.png'; if(!file_exists($avatar_abs_url) || (time()-filemtime($avatar_abs_url)) > $cache_time)//过期或图片不存在 { $new_avatar = getGravatar($mail,$size,$default); copy($new_avatar,$avatar_abs_url); } return "<img title='{$alt}' alt='{$alt}' src='{$avatar_url}' height='{$size}' width='{$size}' />"; } ?> 调用方式: <?php get_avatar($comment['mail'],"{$comment['poster']}{$comment['comment_nums']}");?> Emlog文章页路径获取分类<?php //文章页路径获取分类 function sortbread($sortid){ global $CACHE; $sort_cache = $CACHE->readCache('sort'); ?> <?php if (isset($sort_cache[$sortid])): ?> <?php if (isset($sort_cache[$sort_cache[$sortid]['pid']])): ?> <a href="<?php echo Url::sort($sort_cache[$sortid]['pid']); ?>"><?php echo $sort_cache[$sort_cache[$sortid]['pid']]['sortname']; ?></a> » <?php endif; ?> <a href="<?php echo Url::sort($sortid); ?>"><?php echo $sort_cache[$sortid]['sortname'];?></a> » <?php endif;?> <?php }?> 调用方式: <?php sortbread($sortid); ?> Emlog标签作为页面关键词<?php //标签作为页面关键词 function page_tag_key($blogid){ global $CACHE; $log_cache_tags = $CACHE->readCache('logtags'); if (!empty($log_cache_tags[$blogid])){ $tag = ''; foreach ($log_cache_tags[$blogid] as $value){ $tag .= $value['tagname'].','; } echo $tag; } }?>留着以后备用,先收着,来源xlonewolf.net
2014年10月22日
6,348 阅读
0 评论
0 点赞
2014-10-19
网站设计的一些css命名规则
头:header内容:content/containe尾:footer导航:nav侧栏:sidebar栏目:column页面外围控制整体布局宽度:wrapper左右中:left right center登录条:loginbar标志:logo广告:banner页面主体:main热点:hot新闻:news下载:download子导航:subnav菜单:menu子菜单:submenu搜索:search友情链接:friendlink页脚:footer版权:copyright滚动:scroll内容:content标签页:tab文章列表:list提示信息:msg小技巧:tips栏目标题:title加入:joinus指南:guild服务:service注册:regsiter状态:status投票:vote合作伙伴:partnerXHTML文件中id的命名1)页面结构容器: container页头:header内容:content/container页面主体:main页尾:footer导航:nav侧栏:sidebar栏目:column页面外围控制整体布局宽度:wrapper左右中:left right center(2)导航导航:nav主导航:mainbav子导航:subnav顶导航:topnav边导航:sidebar左导航:leftsidebar右导航:rightsidebar菜单:menu子菜单:submenu标题: title摘要: summary(3)功能标志:logo广告:banner登陆:login登录条:loginbar注册:regsiter搜索:search功能区:shop标题:title加入:joinus状态:status按钮:btn滚动:scroll标签页:tab文章列表:list提示信息:msg当前的: current小技巧:tips图标: icon注释:note指南:guild服务:service热点:hot新闻:news下载:download投票:vote合作伙伴:partner友情链接:link版权:copyrightXHTML文件中class的命名(1)颜色:使用颜色的名称或者16进制代码,如(不建议以表现来命名).red { color: red; }.f60 { color: #f60; }.ff8600 { color: #ff8600; }(2)字体大小,直接使用"font+字体大小"作为名称,如.font12px { font-size: 12px; }.font9pt {font-size: 9pt; }(3)对齐样式,使用对齐目标的英文名称,如.left { float:left; }.bottom { float:bottom; }(4)标题栏样式,使用"类别+功能"的方式命名,如.barnews { }.barproduct { }注意事项1.一律小写;2.尽量用英文;3.不加中杠和下划线;4.尽量不缩写,除非一看就明白的单词.主要的 master.css模块 module.css基本共用 base.css布局,版面 layout.css主题 themes.css专栏 columns.css文字 font.css表单 forms.css补丁 mend.css打印 print.css
2014年10月19日
3,879 阅读
0 评论
0 点赞
2014-10-18
CSS学习笔记
打算把默认模版弄下,在学习下CSS,记录些笔记。四种样式的优先级按照“就近原则”:行内样式>内嵌样式>链接样式>导入样式body,div,p,a,ul,li{margin:0; padding:0;}以下为页面模块的常用命名 头:header 热点:hot 内容:content/ 新闻:news 尾:footer 下载:download 寻航:nav 子寻航:subnav 侧栏:sidebar 菜单:menu 栏目:column 子菜单:submenu 页面外围控制整体布尿宽度:wrapper 搜索:search 左右中:left right center 友情链接:friendlink 登彔条:loginbar 页脚:footer 标志:logo 版权:copyright 广告:banner 滚劢:scroll 页面主体:main 小技巧:tips我们在布局页面的时候,会将HTML标签分成丟种,块状元素和内联元素(我们平时用到的标签div和p就是块状元素,链接标签a就是内联元素)。他们是径重要的两个概念,既然说到概念就先看看块状元素和内联元素的定义,在定义中你要留意他们两个的不同之处块状元素 一般是其他元素的容器,可容纳内联元素和其他坑状元素,块状元素排斥其他元素不其位于同一行,宽度(width)和高度(height)起作用。帯见块状元素为div和p。 内联元素 内联元素叧能容纳文本戒者其他内联元素,它允讲其他内联元素不其位于同一行,但宽度(width)和高度(height)不起作用。帯见内联元素为“a”。 块状元素排斥其他元素不准位于同一行 如果要让定义好的宽度和高度对内联元素起作用,有什举办法没有?答案是:当然。因为事情没有绝对的,在CSS上面也成立,因为CSS中有两种元素,内联元素和块状元素,但是宽度和高度叧对坑状元素起作用,内联元素丌起作用,如果我们把内联元素转化成块状元素,他们就具有了块状元素的特性了嘛,当然宽度和高度也就起作用了,如果你能想到这个思路,证明你的大脑现在非帯活跃哟,这时候我们叧需要给相应的内联元素加上一个属性display:block就可以了,如下: a{color:#fff; background:#F93;width:100px;height:50px; display:block;} 为什举两个a都处于同一行了呢,那是因为这两个内联元素a都被转化成了坑状元素,既然成功转化为坑状元素,就应该具有坑状元素最显著的一个特点,不允讲其他元素不他同一行,所以返丟个a垂直掋列喽body,div{padding:0; margin:0;} margin:0 auto; 居中清除:<div class="clear"></div> .clear{clear:both;}ul里面癿li 标签也是块状元素 #nav ul li{ float:left;} 可以让它们横向排列 list-style:none; 无图标 #nav ul li a{display:block; height:35px; font-size:12px; color:#333; text-decoration:none; float:left; padding:0 10px;}首先有个标题,其次下面是标题癿一个列表,这样子容易让人想到用“ul+li”的组吅,但是我们返里有一个更好用法, 用“dl+dt+dd”组吅,返种组吅在返里是一个径丌错癿选择,要比“ul+li”要好侧边栏可用dl dt dd 方便CSSbody,div,p,ul,li,dl,dt,dd,h1,a,img{margin:0; padding:0;} img{border:none;} 图片无边框img 标签是一个径特别癿标签,因为它本身是内联元素,但却体现出坑状元素宽高起作用癿特性,返是径矛盾癿地斱,返就为页面布尿埋下隐患,要举为内联元素,要举为坑状元素,在返里我们更需要它癿坑状元素癿属性,所以我们将身为内联元素癿img标签转化为坑状元素,用“display:block; ”。#banner img{display:block; width:1000px; height:292px;} 返句话癿意思就是#banner里面癿图片大小为1000px*292px,无讳图片原本大小,叧要在#banner内,就是返个宽高。 overflow:hidden; 隐藏 line-height:32px; 行高,可以让文字有垂直居中的效果块级元素的垂直相邻外边距会合并,而行内元素实际上不占上下外边距。行内元素的的左右外边距不会合并。同样地,浮动元素的外边距也不会合并。允许指定负的外边距值,不过使用时要小心xhtml的块级元素(div)和内联元素(span)块级元素:就是一个方块,像段落一样,默认占据一行出现;内联元素:又叫行内元素,顾名思义,只能放在行内,就像一个单词,不会造成前后换行,起辅助作用。一般的块级元素诸如段落<p>、标题<h1><h2>...、列表,<ul><ol><li> 、表格<table>、表单<form>、DIV<div>和BODY<body>等元素。而内联元素则如: 表单元素<input>、超级链接<a>、图像<img>、<span> ..<em>...... 块级无素的显著特点是:每个块级元素都是从一个新行开始显示,而且其后的无素也需另起一行进行显示。级元素默认占据一行,相当于在它之前和之后各插入了一个换行;而内联元素span没对显示效果造成任何影响,事实也是如此;em只是让字体变成了斜体,也没有单独占据一行。这就是块级元素和内联元素,正因为有了这些元素,才使我们的网页变得丰富多彩。如果没有css的作用,块元素会顺序以每次另起一行的方式一直往下排。而有了css以后,我们可以改变这种html的默认布局模式,把块元素摆放到你想要的位置上去。而不是每次都愚蠢的另起一行。也就是说,可以用css的display:inline将块级元素改变为内联元素,也可以用display:block将内联元素改变为块元素二级菜单:#menu ul li ul { border:1px solid #ccc;}#menu ul li ul li { float:none; width:85px; background:#eee; margin:0;}#menu ul li ul li a { background:none;}#menu ul li ul li a:hover { background:#333; color:#fff;}下一步就该把二级菜单隐藏,当鼠标划过时显示出来了。增加如下代码#menu ul li ul { display:none; border:1px solid #ccc;}#menu ul li:hover ul { display:block;}注意第二行的写法,#menu ul li:hover ul这个样比较难理解,它的意思是定义当鼠标划过#menu下ul下li时,li下的ul的样式(有点饶舌),这里设置为display:block,意思是鼠标划过时显示这块内容。开始隐藏,鼠标划过时显示, 这就实现了我们想要的效果。目前IE6只支持a的伪类,其它标签的伪类不支持,所以要想在IE6下也显示正确,需要借助js来实现。我们定义一个类.sfhover(自己命名,需和JS中相同)的属性为display:block;然后当鼠标划过后,用JS给当前li添加上这个样式上,根据css的优先级:指定的高于继承的原则,就实现了IE6下的正确显示。所以增加如下代码:#menu ul li.sfhover ul { display:block;} 认真跟着教程制作的朋友可能已经发现,现在应用的JS和纵向导航时应用的不样,但最终实现的效果是一样的。同理css在布局网站时,也是可以多种方法的,正所谓条条大道通罗马,希望大家举一反三,加深前面教程的掌握。JS部分本例不做讲解,如果你想弄清楚JS是如何实现的,请学习js相关内容。到这里,本例就基本完成了,还有一个问题是当前导航下有内容的话,如果二级菜单显示,将会把下边的内容挤跑,所以需要给#menu ul li ul增加position:absolute;属性,当其绝对定位后,它将脱离原来文档流,不再占据空间,因此也不会再把下边内容挤跑了下拉菜单完整代码:#menu ul li ul { border:1px solid #ccc; display:none; position:absolute;}#menu ul li ul li { float:none; width:87px; background:#eee; margin:0;}#menu ul li ul li a { background:none;}#menu ul li ul li a:hover { background:#333; color:#fff;}#menu ul li:hover ul { display:block;}#menu ul li.sfhover ul { display:block;}
2014年10月18日
3,779 阅读
0 评论
0 点赞
2014-10-13
转一些CSS技巧
1. 文字的水平居中将一段文字置于容器的水平中点,只要设置text-align属性即可: text-align:center;2. 容器的水平居中先为该容器设置一个明确宽度,然后将margin的水平值设为auto即可。 div#container { width:760px; margin:0 auto; }3. 文字的垂直居中单行文字的垂直居中,只要将行高与容器高设为相等即可。比如,容器中有一行数字。 1234567890然后CSS这样写: div#container {height: 35px; line-height: 35px;}如果有n行文字,那么将行高设为容器高度的n分之一即可。4. 容器的垂直居中比如,有一大一小两个容器,请问如何将小容器垂直居中? 首先,将大容器的定位为relative。 div#big{ position:relative; height:480px; }然后,将小容器定位为absolute,再将它的左上角沿y轴下移50%,最后将它margin-top上移本身高度的50%即可。 div#small { position: absolute; top: 50%; height: 240px; margin-top: -120px; }使用同样的思路,也可以做出水平居中的效果。5. 图片宽度的自适应如何使得较大的图片,能够自动适应小容器的宽度?CSS可以这样写: img {max-width: 100%}但是IE6不支持max-width,所以遇到IE6时,使用IE条件注释,将语句改写为: img {width: 100%}6. 3D按钮要使按钮具有3D效果,只要将它的左上部边框设为浅色,右下部边框设为深色即可。 div#button { background: #888; border: 1px solid; border-color: #999 #777 #777 #999; }7. font属性的快捷写法font快捷写法的格式为: body { font: font-style font-variant font-weight font-size line-heightfont-family; }所以, body { font-family: Arial, Helvetica, sans-serif; font-size: 13px; font-weight: normal; font-variant: small-caps; font-style: italic; line-height: 150%; }可以被写成: body { font: italic small-caps normal 13px/150% Arial, Helvetica,sans-serif; }8. link状态的设置顺序link的四种状态,需要按照下面的前后顺序进行设置: a:link a:visited a:hover a:active9. IE条件注释你可以利用条件注释,设置只对IE产生作用的语句: 还可以区分各种不同的IE版本: 10. IE6专用语句:方法一由于IE6不把html视为文档的根元素,所以利用这一点,可以写出只有IE6才能读到的语句: * html{ } * html body{ } * html .foo{ }IE7专用语句则要写成 *+html .foo{ }11. IE专用语句:方法二除了IE6以外,所有浏览器都不能识别属性前的下划线。而除了IE7之外,所有浏览器都不能识别属性前的*号,因此可以写出只有这两个浏览器才能读到的语句: .element { background: red; *background: green; _background: blue; }12. CSS的优先性如果同一个容器被多条CSS语句定义,那么哪一个定义优先呢?基本规则是: 行内样式 > id样式 > class样式 > 标签名样式比如,有一个元素: 行内样式是最优先的,然后其他设置的优先性,从低到高依次为: div < .class < div.class < #id < div#id <#id.class < div#id.class13. IE6的min-heightIE6不支持min-height,有两种方法可以解决这个问题:方法一: .element { min-height: 500px; height: auto !important; height: 500px; }共有三条CSS语句,第一句是针对其他浏览器设置最小高度,第三句是针对IE设置最小高度,第二句则是让其他浏览器覆盖第三句的设置。方法二: .element { min-height: 500px _height: 500px }_height只有IE6能读取。14. font-size基准浏览器的缺省字体大小是16px,你可以先将基准字体大小设为10px: body {font-size:62.5%;}后面统一采用em作为字体单位,2.4em就表示24px。 h1 {font-size: 2.4 em}15. Text-transform和Font VariantText-transform用于将所有字母变成小写字母、大写字母或首字母大写: p {text-transform: uppercase} p {text-transform: lowercase} p {text-transform: capitalize}Font Variant用于将字体变成小型的大写字母(即与小写字母等高的大写字母)。 p {font-variant: small-caps}16. CSS重置CSS重置用于取消浏览器的内置样式,请参考YUI和Eric Meyer的样式表。17. 用图片充当列表标志默认情况下,浏览器使用一个黑圆圈作为列表标志,可以用图片取代它: ul {list-style: none} ul li { background-image: url("path-to-your-image"); background-repeat: none; background-position: 0 0.5em; }18. 透明将一个容器设为透明,可以使用下面的代码: .element { filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity: 0.5; opacity: 0.5; }在这四行CSS语句中,第一行是IE专用的,第二行用于Firefox,第三行用于webkit核心的浏览器,第四行用于Opera。19. CSS三角形如何使用CSS生成一个三角形?先编写一个空元素 然后,将它四个边框中的三个边框设为透明,剩下一个设为可见,就可以生成三角形效果: .triangle { border-color: transparent transparent green transparent; border-style: solid; border-width: 0px 300px 300px 300px; height: 0px; width: 0px; }20. 禁止自动换行如果你希望文字在一行中显示完成,不要自动换行,CSS命令如下: h1 { white-space:nowrap; }21. 用图片替换文字有时我们需要在标题栏中使用图片,但是又必须保证搜索引擎能够读到标题,CSS语句可以这样写: h1 { text-indent:-9999px; background:url("h1-image.jpg") no-repeat; width:200px; height:50px; }22. 获得焦点的表单元素当一个表单元素获得焦点时,可以将其突出显示: input:focus { border: 2px solid green; }23. !important规则多条CSS语句互相冲突时,具有!important的语句将覆盖其他语句。由于IE不支持!important,所以也可以利用它区分不同的浏览器。 h1 { color: red !important; color: blue; }上面这段语句的结果是,其他浏览器都显示红色标题,只有IE显示蓝色标题。24. CSS提示框当鼠标移动到链接上方,会自动出现一个提示框。 链接文字提示文字CSS这样写: a.tooltip {position: relative} a.tooltip span {display:none; padding:5px; width:200px;} a:hover {background:#fff;} a.tooltip:hover span{display:inline; position:absolute;}25. 固定位置的页首当页面滚动时,有时需要页首在位置固定不变,CSS语句可以这样写,效果参见http://limpid.nl/lab/css/fixed/header: body{ margin:0;padding:100px 0 0 0;} div#header{ position:absolute; top:0; left:0; width:100%; height:; } @media screen{ body>div#header{position: fixed;} } * html body{overflow:hidden;} * html div#content{height:100%;overflow:auto;}IE6的另一种写法(用于固定位置的页脚): * html #footer { position:absolute; top:expression_r((0-(footer.offsetHeight)+(document.documentElement.clientHeight ?document.documentElement.clientHeight :document.body.clientHeight)+(ignoreMe =document.documentElement.scrollTop ?document.documentElement.scrollTop :document.body.scrollTop))+'px');}26. 在IE6中设置PNG图片的透明效果 .classname { background: url(image.png); _background: none; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader (src='image.png', sizingMethod='crop'); }27. 各类浏览器的专用语句 * html #uno { color: red } *:first-child+html #dos { color: red } html>body #tres { color: red } html>body #cuatro { color: red } html:first-child #cinco { color: red } html[xmlns*=""] body:last-child #seis { color: red } body:nth-of-type(1) #siete { color: red } body:first-of-type #ocho { color: red } @media screen and (-webkit-min-device-pixel-ratio:0) { #diez { color: red } } @media screen and (max-device-width: 480px) { #veintiseis { color: red } } html[xmlns*=""]:root #trece { color: red } *|html[xmlns*=""] #catorce { color: red } :root *> #quince { color: red } *+html #dieciocho { color: red } #veinticuatro, x:-moz-any-link { color: red } #veinticinco, x:-moz-any-link, x:default { color: red } #once { _color: blue } #doce { *color: blue; } #diecisiete { color: blue } #diecinueve { color: blue\9; } #veinte { color: blue\9; } #veintesiete { color: blue !ie; }28. 容器的水平和垂直居中HTML代码如下: CSS代码如下: .logo { display: block; text-align: center; display: block; text-align: center; vertical-align: middle; border: 4px solid #dddddd; padding: 4px; height: 74px; width: 74px; } .logo * { display: inline-block; height: 100%; vertical-align: middle; } .logo .photo { height: auto; width: auto; max-width: 100%; max-height: 100%; }29. CSS阴影外阴影: .shadow { -moz-box-shadow: 5px 5px 5px #ccc; -webkit-box-shadow: 5px 5px 5px #ccc; box-shadow: 5px 5px 5px #ccc; }内阴影: .shadow { -moz-box-shadow:inset 0 0 10px #000000; -webkit-box-shadow:inset 0 0 10px #000000; box-shadow:inset 0 0 10px #000000; }30. 取消IE文本框的滚动条 textarea { overflow: auto; }
2014年10月13日
3,408 阅读
0 评论
0 点赞
1
...
5
6
7
...
18