2011-11-03

Media Queries 筆記

筆記
link rel="stylesheet" type="text/css"  
href="style.css" media="all"
 
link rel="stylesheet" type="text/css"  
href="ipad.css" media="screen and (max-width: 768px)
 
link rel="stylesheet" type="text/css" 
href="iphone.css" media="handheld and (max-width: 480px), 
screen and (max-device-width: 480px),screen and (max-width: 600px)


iphone4

link rel="stylesheet" type="text/css"   
href="iphone4.css" media="only screen and (-webkit-min-device-pixel-ratio: 2)"


ipad直與橫
link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css"
link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css"

另外加上
meta name="viewport" content="width=device-width, 
minimum-scale=1.0, maximum-scale=1.0"

2011-09-08

FLASH按鈕觸發fancybox

有半年多沒有隨筆的文章了
但也不是沒有再有新的東西在學習

最近一兩年在製作案子上遇到很多相同的廣告案
一直在尋找一些有用的套件能夠縮短設計和程式的製作時程
後來有用一套fancybox的Jquery套件來處理相關的彈跳視窗
用起來很方便,而且可以修改客製的地方也很多

不過最近在製作上會需要在FLASH按鈕上來觸發這一個動作
一開始還蠻傷腦筋
不過程式部的同事還是很厲害的將它實現出來
我研究了一下
主要是將FLASH按鈕用AS來觸發一個HTML上的function
 而這個function的動作是觸發fancybox的TAG
 所以只要把這個TAG隱藏起來就OK了<

FLASH按鈕 --> function --> < a > -->fanctbox視窗

很有趣的設計方式,這樣也省下不少麻煩!

-----------------------------------------------------------------------------------------
補充:

1.flash上按鈕必須命名"flashBtn"
2.flash影格上下AS
flashBtn.onRelease = function ()
{
        flash.external. ExternalInterface.call ("htnlfunction")
}
3.HTML上加function
function htnlfunction() {
       $("sampleID"). trigger("click")
}

4.HTML上加假的觸發TAG
 < a href="#ppp" id="sampleID" style="visibility:hidden">< /a>

5.設定 fancybox ="ppp"

2011-02-25

【轉載】Lazy Load, 延迟加载图片的 jQuery 插件

  在浏览有些网站时,发现图片是在下拉滚动条时才加载,这是一个很不错的用户体验。这一效果是通过JavaScript 编写的 jQuery 插件实现的,它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预加载的处理方式正好是相反的.在包含很多大图片长页面中延迟加载图片可以加快页面加载速度. 浏览器将会在加载可见图片之后即进入就绪状态. 在某些情况下还可以帮助降低服务器负担. 有些WordPress主题也具备了此功能。

  目前我的网站由于有图片,能所以也试着加上看看效果如何。这里把这一功能应用到WordPress主题方法说一下,其实很简单,首先下载jquery.lazyloa.js,放到主题目录中,然后在header.php模板文件</head>标签前添加如下代码:

<script type=”text/javascript” src=”<?php bloginfo(‘template_directory’);?>/js/jquery.lazyload.js”></script>

<script type=”text/javascript”>

$(function() {
$(“img”).lazyload({
effect : “fadeIn”
});
});

</script>

其中img是延迟加载所有图片,也可以根据不同模板作相应改动,比如我这个主题,可以改成#post img,这样只延迟加载#post 容器内的图片,否则可能影响到侧边图片的加载,主要是留言者头像可能会最后加载;

fadeIn是图片显示效果

这样基本就可以了!

如果上面的功能可能没有达到你的要求,还有几个选项可供设置。

可以设置阀值来控制 灵敏度

$(“img”).lazyload({ threshold : 200 });

把阀值设置成200 意思就是当图片没有看到之前先load 200像素。当然了你也可以通过设置占位符图片和自定事件来触发加载图片事件

$(“img”).lazyload({
placeholder : “img/grey.gif”,
event : “click”
});

还可以通过定义effect 参数来定义一些图片显示效果

$(“img”).lazyload({
placeholder : “img/grey.gif”,
effect : “fadeIn”
});

事件触发加载,事件可以是任何 jQuery 时间, 如: click 和 mouseover. 你还可以使用自定义的事件, 如: sporty 和 foobar. 默认情况下处于等待状态, 直到用户滚动到窗口上图片所在位置. 在灰色占位图片被点击之前阻止加载图片, 你可以这样做:

$(“img”).lazyload({
placeholder : “img/grey.gif”,
event : “click”
});

延迟加载图片,Lazy Load 插件的一个不完整的功能, 但是这也能用来实现图片的延迟加载. 下面的代码实现了页面加载完成后再加载. 页面加载完成 5 秒后, 指定区域内的图片会自动进行加载.

$(function() {
$(“img:below-the-fold”).lazyload({
placeholder : “img/grey.gif”,
event : “sporty”
});
});

$(window).bind(“load”, function() {
var timeout = setTimeout(function() {$(“img”).trigger(“sporty”)}, 5000);
});

图片在容器里面你可以将插件用在可滚动容器的图片上, 例如带滚动条的 DIV 元素. 你要做的只是将容器定义为 jQuery 对象并作为参数传到初始化方法里面.

CSS

#container {height: 600px;overflow: scroll;}

JavaScript 代码:

$(“img”).lazyload({
placeholder : “img/grey.gif”,
container: $(“#container”)
});

当图片不顺序排列,滚动页面的时候, Lazy Load 会循环为加载的图片. 在循环中检测图片是否在可视区域内. 默认情况下在找到第一张不在可见区域的图片时停止循环. 图片被认为是流式分布的, 图片在页面中的次序和 HTML 代码中次序相同. 但是在一些布局中, 这样的假设是不成立的. 不过你可以通过 failurelimit 选项来控制加载行为.

$(“img”).lazyload({
failurelimit : 10
});

2010-12-15

jquary的彈跳視窗

最近在製作活動網站的時候常常需要使用到彈跳視窗
來節省一些頁面的製作或是展示照片

jquary上面的支援很豐富
這類的需求應該可以輕鬆解決

介紹一個最近看到的jquary套件
"fancybox"
http://fancybox.net/

效果上面除了灰底、彈跳視窗(包含一般DIV、Iframe、SWF)、在圖片的播放上也支援說明文字與滑鼠滾輪撥放。

使用方式跟jquary一班的使用方式差不多,加載JS文件就可以使用了~

圖片撥放的UI已經用的蠻廣泛的了~
如果還是在網頁上傻傻的換頁撥放圖片或是全部都擺出來展現
一方面在網頁瀏覽上使用速度會受到影響
一方面網頁的豐富性和視覺體驗都會比較呆版

有機會使用看看囉~

2010-11-17

如何建立iphone专用网站-iphone css 设计提示【轉載】

iphone4上市后,虽然广受诟病,但不得不承认老乔的苹果确实卖的很好,手机平台的网络应用也备受关注。作
为一个独立博客网站,是不是也应该让自己的博客支持手机浏览呢?答案是肯定的!

iphone上的Safari浏览器使用的是webkit核心,我们可以基于此建立许多基于css3的酷玩意儿;下面的文章介绍了一些关于
iphone客户端website&css设计的基本内容,作为新手入门
还是不错的。

原文:http://csswizardry.com/2010/01/iphone-css-tips-for-building-iphone-websites/

入门

在iphone上设计网页和设计打印样式表(print
stylesheet)非常相似。页面是竖排版的,所有内容均按行显示,不允许分栏;我们在普通web网站上的2栏、3栏的样式设计估计是派不上用场了
^_^。

用php判断用户在使用iphone浏览网站

使用iphone上网的客户会在$_SERVER['HTTP_USER_AGENT']中显示iphone….,我们可以做如下判断:

<?php
$browser= strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
if ($browser == true){
$browser= 'iphone';
}
?>

在后面的代码中我们可以这样写:

<?php
if($browser == 'iphone'){
?>
这些文字只会出现在
iPhone中
<?php
}
?>

桌面图标


当然,我们希望我们的网页可以被放在safari的收藏夹里,更希望我们的网站在主屏的圆角高光图标里也能占有一席之地。嗯,用户可以选择把我们的网站放
在主屏上,可是呢,你会发现——名字老长老长,而且没有图标。

添加如下php代码可以为iphone设计一个独立的标题

<?php if($browser == 'iphone'){ ?>
<title>Short iPhone only
title</title>
<?php }else{ ?>
<title>Regular
title</title>
<?php } ?>

如何制作桌面图标

这再简单不过了,制作一张57X57像素的png图片上传到你的网站根目录下,为图片命名 apple-touch-icon.png

iphone会自动找到这张图片并保存起来~我们的桌面图片也就有了^_^

禁止用户缩放网页

既然是为iphone专用的网页,之前的字体、页面已经设计好;不希望用户再缩小或放大,我们可以在head中放置特殊的meta标记做到这点:

<?php if($browser == 'iphone'){ ?>
<meta name="viewport"
content="width=device-width, minimum-scale=1.0, maximum-scale=1.0" />
<?php }
?>

开始设计CSS样式

你可以为iphone设计一个全新的网站,如:m.your-domain.com。这样的做法可能比较费时、费力。比较折中的做法是为已有的样式
表(stylesheet)添加一部分代码以供iphone使用。

首先,需要确定link中不包含media属性

<link rel="stylesheet" type="text/css"
href="/path/to/style.css" />


在样式表中增加如下内容

/*--- Main CSS here ---*/
/*------------------------------------*\
IPHONE
\*------------------------------------*/
@media screen and (max-device-width:480px){
/*--- iPhone only CSS here ---*/
}

注意事项:

为iphone设计css需要注意以下几点。

  1. 不要使用绝对宽度如width:960px;
    可以用相对宽度代替如widht:100%;

  2. 不要使用float元素浮动,iphone中的
    内容都是按行显示的

  3. 禁用自动字体调整,将
    -webkit-text-size-adjust设置为none
/*--- Main CSS here ---*/
/*------------------------------------*\
IPHONE
\*------------------------------------*/
@media screen and (max-device-width:
480px){
body{
-webkit-text-size-adjust:none;
font-family:Helvetica, Arial, Verdana, sans-serif;
padding:5px;
}
}

在上面的代码中,我设置了
padding,为每个元素边界设定一定空隙,为的是让用户使用触摸屏时不至于误点击。
  1. 所有的div元素都应当设置width:100%;

iphone上的网页布局设计

接下来的布局设计就像上面提到的那样,移除所有float元素、设置div的width:100%

@media screen and (max-device-width: 480px){
body{...}
div{
clear:both!important;
display:block!important;
width:100%!important;
float:none!important;
margin:0!important;
padding:0!important;
}
}

网站导航
@media screen and (max-device-width: 480px){
body{...}
div{...}
#nav,#nav li{
float:none!important;
clear:both!important;
margin:0 0 20px 0!important;
display:block;
padding:0;
text-align:left!important;
width:100%;
}
#nav{
border:1px solid #ccc;
padding:5px;
-webkit-border-radius:5px;
}
#nav li{
margin:0!important;
}
#nav li a{
display:block;
}
}

图片
@media screen and (max-device-width: 480px){
body{...}
div{...}
#nav,#nav
li{...}
img{
max-width:100%;
height:auto
}
}

通过上面的介绍,相信各位对iphone网页设计应该有了基本的认识,马上去为自己的网站建立iphone专有页面;可能有意想不到的收获哦^_^。


如果喜欢本文,欢迎转载,转载请注明出处哦~

http://www.cnphp.info/howto-build-iphone-websites-and-tips-for-iphone-css-design.html

2010-07-15

jquary導航的實作

最近手邊的網頁需要一個導航,
想了很久,可能用一個導航加上sub導航的方式會比較適合,
導航有AAA, BBB, CCC, DDD 四個大項目
下面各有aaa, bbb, ccc 三個小項目

AAA-->aaa, bbb, ccc
BBB-->aaa, bbb, ccc
CCC-->aaa, bbb, ccc
DDD-->aaa, bbb, ccc

我想用按下AAA後再出現aaa, bbb, ccc的方式進行,而被選中的項目下會有箭頭圖示
我覺得jquary的一些顯示方式還挺不錯 的~
試著自己做看看了

首先是要有一個jquary的文件
< src="js/jquery.js" type="text/javascript">< /script>

再來是代碼的部份
有bottom和subbottom兩個部份

< id="bottom">
< ul>
< li>< span>< a id="nav1" onclick="navTabs(1)">AAA< div>< /div>< /a>< /span>< /li>
< li>< span>< a id="nav2" onclick="navTabs(2)">BBB< div>< /div>< /a>< /span>< /li>
< li>< span>< a id="nav3" onclick="navTabs(3)">CCC< div>< /div>< /a>< /span>< /li>
< li>< span>< a id="nav4" onclick="navAppTab(4)">DDD< div>< /div>< /a>< /span>< /li>
< /UL>
< /div>

< div id="subbottom" style="display:none">
< ul id="sub1">
< li>< span>< a href="#">aaa< /a>< /span>< /li>
< li>< span>< a href="#">bbb< /a>< /span>< /li>
< li>< span>< a href="#">ccc< /a>< /span>< /li>
< /ul>
< ul id="sub2">
< li>< span>< a href="#">aaa< /a>< /span>< /li>
< li>< span>< a href="#">bbb< /a>< /span>< /li>
< li>< span>< a href="#">ccc< /a>< /span>< /li>
< /ul>
< ul id="sub3">
< li>< span>< a href="#">aaa< /a>< /span>< /li>
< li>< span>< a href="#">bbb< /a>< /span>< /li>
< li>< span>< a href="#">ccc< /a>< /span>< /li>
< /ul>
< ul id="sub4">
< li>< span>< a href="#">aaa< /a>< /span>< /li>
< li>< span>< a href="#">bbb< /a>< /span>< /li>
< li>< span>< a href="#">ccc< /a>< /span>< /li>
< /ul>
< /div>



希望的效果是,點下AAA後展開aaa, bbb, ccc的選單,
而閒置一段時間後會自動縮回。

< script type="text/javascript">
var timeID;
function navTabs(id) {
clearTimeout(timeID);
$('#subbottom').slideDown();
$('#homebottom').slideUp();
$('#nav0,#nav1,#nav2,#nav3,#nav4').removeClass('mainNavSel');
$('#nav'+id).addClass('mainNavSel');
$('#sub1,#sub2,#sub3').hide();
$('#sub'+id).show();
timeID = setTimeout("hideAll()", 4000);
}
function hideAll() {
$('#subbottom').slideUp('slow');
$('#homebottom').slideDown('slow');
$('#nav0,#nav1,#nav2,#nav3,#nav4').removeClass('mainNavSel');
}
< /script>

按下AAA觸發navTabs(1)
--> #subbottom展開
--> #homebottom收起
--> 先全部除移除class="mainNavSel"這是箭頭
--> 再把被觸發項目下加上class="mainNavSel"加上箭頭
--> sub導航先收起來
--> 被觸發的sub導航展開
--> 設定timeout時間

setTimeout觸發另一個function hideAll() ,會把所有subbottom都收起來,
但是有一個問題最後觸發的 Timeout會累加,
所以再按下另一個navTab的時候必須清除之前計算的時間,
在上面加上 clearTimeout(timeID);
打完收工~~

基于vertical-align的表单元素垂直对齐方式研究

人人網FED看到這篇文章,相當開 心
基于vertical-align 的表单元素垂直对齐方式研究

這問題也困擾我一段時間,
尤其在製作表單的時候,
單選框和複選框與文字的對齊非常難搞,
看完這邊文章後,我馬上修改了手邊 的CSS,
修改後相當滿意~

大致解決方案如下:

單選框和複選框的對齊方式和文字的算法不同,
所以利用方塊元素 label or span 來作為容器,
這 樣對齊的時候會以這兩樣同等的元素來宣染,
所以遇到單選框和複選框加文字的時候,
文字外一率加 上 label or span ,
並在CSS的設定上,
input, span, label { margin:0;padding:0; vertical-align:middle;}
這樣就能完美的顯示居中對齊的畫面。