水无声

细水长流,润物无声
posts - 8, comments - 2, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

2010年12月20日

引自:http://www.zvv.cn/blog/?action=show&id=31

What You Should Know About Floats 
------------------------------------------------------------------------------------

“关于图文围绕的实践可以追溯到很久很久以前。这也就是为什么从Netscape1.1开始这个功能被引入浏览器,以及为什么CSS使用浮动属性来实现它。 ‘Float(浮动)’这个术语引用自伴随Netscape1.1一同发布的‘Additions to HTML 2.0’文档,描述一个元素浮动至某一侧并停下的表现方式。”[Containing Floats

“浮动元素的定位还是基于正常的文档流,然后从文档流中抽出并尽可能远的移动至左侧或者右侧。文字内容会围绕在浮动元素周围。当一个元素从正常文档流中抽出后,仍然在文档流中的其他元素将忽略该元素并填补他原先的空间。” [Float Positioning

“元素浮动后将自动转为块级元素。该元素可以被移动至当前行的左侧或右侧。属性如下:float: left, float: right or float: none”[Floatutorial: Float Basics

“你应该为所有的浮动元素设定宽度属性(除非是<img>元素,因其具有隐含的宽度)。如果不设定宽度,结果将是不可预知的。”[Floatutorial: Float Basics

“举例来说,浮动元素应该定义宽度属性,不论是显式指定的还是隐含的。另外,它会尽可能的水平的填充容器元素,就像非浮动内容那样,不给其他内容空间以围绕它们。其次,和正常文档流中的元素不同,浮动元素的垂直边距(margin)不会叠加。最后,浮动元素可以和临近在正常文档流中块级元素重叠(译注:浮动元素不占任何正常文档流空间,所以建议不要理解成重叠,而是腾空浮动的概念。)。”[CSS Positioning: Floats

“首先我们要牢记的一件事情是,浮动元素只能浮动至左侧或者右侧,没有浮动至中间一说,这是很多新手容易范的错误。记住,最基本的规则,浮动元素只能浮动至两侧。” [Float Layouts

“当我们让一个元素浮动,它会往右或者往左浮动直至遇到容器的边缘。如果我们向同一方向再浮动一个元素,它会浮动直至碰到前一个浮动元素的边缘。如果我们浮动更多的元素,他们将一个挨一个排列,但不久就会空间不足,当该行已经无法容纳更多的浮动元素,则下一个浮动元素会换行继续排列。” [Float Layouts

Containing blocks or containing boxes:“容器元素是指包含其他子元素的行级或块级元素。。。。” [Floatutorial

“当明确指定时,浮动元素垂直位置由它原先在文档流中的位置决定,顶端与当前行顶端对其。但是水平方向上,它尽可能远的向容器元素边缘移动,但是仍遵循容器元素的填充距离(padding)。同行的行内元素则围绕浮动元素排列。” [CSS Positioning: Floats]

“由于浮动元素不占据正常文档流空间,所以浮动元素前后那些未明确指定位置的块级元素会占据浮动元素本来应该处在的位置,就好像它从来不曾存在过。而浮动元素之后的那行会根据浮动元素缩小宽度。浮动元素之前的元素则会重新被排列,占据独立的一行。(译注:ie 和 ff 在这种情况下的表现不尽相同)” [W3C Visual Formatting Model

“如果当前行的水平方向上没有足够的空间容纳浮动元素,则向下一行,直至有能容纳该元素的行。” [Floatutorial: Float Basics

“任何浮动元素都不可能超过原来所处文档留位置的上边界。浮动元素的顶端必定和当前行顶端对齐(或者在没有当前行元素时和前一个块级元素底部边缘对齐)。”[Float Layouts

“想要真正理解浮动理论,你必须明白在CSS中什么是行 (line box)。不幸的是,为了解释什么是行,你必须先明白什么是行级元素。行级元素指的是那些非块级元素,例如<em>而行是一个逻辑上的概念,是一个虚拟的矩形,包含了组成该行的所有行级元素,其高度至少等于这些行级元素中最高的那个。” [Float Layouts

“如果我们将Div中所有的列都加上 float: left 它们会挨个向左排列,如果我们希望在页面底部有一个页脚,并不需要一个最长的列,只要加上 clear: both 就可以了”[Float Layouts

“使用浮动元素包含浮动元素这样的布局方式有一个潜在的缺点,即你的页面是否能够一直保持一致的展现效果将取决于浏览器的实现是否保持一致。特别是当浮动元素是一个更为复杂的布局中的一部分的话,将变得更加不堪一击。”[Containing Floats

Clearing the floats 

-------------------------------------------------------------------------------------

“浮动元素之后的元素会自动围绕该浮动元素。如果你不希望这样,你可以为这些元素应用‘clear’属性。该属性有4种设值:clear: left, clear: right, clear: both or clear: none”[Floats and “clear”

有很多技巧可以做到清理浮动元素,但不引入额外的无语义标签。下面3种是比较常见的做法: a) 将容器元素一起浮动 b) 在容器元素上使用 overflow: hidden c) 使用:after这样的css伪类。 [How to clear CSS floats without extra markup

“插入一个清理元素是使容器正确包裹所有浮动元素的标准做法,这样做具有将容器底部边缘‘拖拉’以包裹所含元素的效果。” [How To Clear Floats Without Structural Markup

“对于基于浮动设计的布局来说,一个常见的问题就是浮动元素的容器不会自动伸展来包含浮动元素。如果你希望在所有的浮动元素的外面加上边框(例如,在容器元素上加上边框),这样你必须显示的命令浏览器来伸展容器。你可以是用overflow method方法。” 

使用:after 想像一下我们使用:after来插入一个点号,并且设置它的属性{clear: both;}。这就是所有你需要做的事情,但是没有人会接受容器底部有那么一丝空隙,所以我们还要设置{height: 0;} 和 {visibility: hidden;} 来保证严丝合缝。 [How To Clear Floats Without Structural Markup]

posted @ 2010-12-20 11:45 水无声 阅读(103) 评论(0) 编辑

2010年9月30日

1、当调用的delphi的dll中有需要管理员权限才能执行的代码时,在部署到服务器上,需配置其程序池的标识为本地系统。

2.、设置第1步后可能会报如下错误:

“验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate ”

解决方案:

在web.config里配置

<pages  enableViewStateMac="false"></pages> 添加到<system.web>配置节

还有人说:(经试验,这种方法不能解决此问题)

查下MSDN就明白了,validationKey和decryptionKey的默认值是AutoGenerate,由系统随机生成密钥,如果在本地或者使用的是独立主机通常不会有什么问题,但是使用虚拟主机,一台服务器上有多个虚拟主机存在时就会出现以上问题,MSDN中也特别指出不能在群集中使用 AutoGenerate应该指定固定的密钥值,至此真相水落石出,立刻在web.config中添加关于machineKey的配置项,并手动设置其中的密钥值,这里请注意,不同加密算法对于密钥的最大字符长度是不同的,在这里能够使用的有AES,DES,3DES,SHA1,MD5,我只知道DES的密钥字符长度为16,3DES长度为48,手动设置时密钥长度必须等于其最大长度,否则会出错!至于密钥的16进制值可以随便输入。

参考的matchineKey配置:

<system.web>

    <machineKey validation="3DES" validationKey="319B474B1D2B7A87C996B280450BB36506A95AEDF9B51211" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A87" decryption="3DES"/>

加密位md5,32位时<machineKey validationKey="C3DD5E21134BDCAF7D951A2ED8E45F7E7395A8CEBAA6A43A8D8528A85B9AB00D"

decryptionKey="ADCBCFC864936D0248917F2CF276E6F392F5A202F1DB53D9" validation="MD5" />

     </system.web>

posted @ 2010-09-30 17:07 水无声 阅读(64) 评论(0) 编辑

兼容IE,FireFox,Chrome等浏览器的全屏窗口显示(去除工具栏,状态栏等)
//login.html
function openMainPage(){
        window.opener = null;
        var screenWidth = screen.availWidth, screenHeight = screen.availHeight;
        var args = "toolbar=no, menubar=no, scrollbars=yes,resizable=yes,location=no, status=no";       

        //打开全屏的新窗口
        var win = window.open("main.htm","_blank",args);
        if(win){
            win.resizeTo(screenWidth,screenHeight);
            win.outerWidth = screenWidth;
            win.outerHeight = screenHeight;
            win.moveTo(0,0);
        }
        window.open('','_self');
        window.close();
    }  


//main.html
                 //页面加载时即关闭父窗口,此页面全屏显示
        if(window.opener){
            window.opener.opener = null;
            window.opener.open('','_self');
            window.opener.close();
            window.opener = null;
        }

posted @ 2010-09-30 15:11 水无声 阅读(768) 评论(2) 编辑

2010年9月28日

耗费了两个小时,仍旧不知道原因为何,暂且就先这样解决,有待研究,见注释行的代码.
代码
$(document).ready(function(){
$(
"#wrap,#gvDiv,#divSplit").height( $(window).height() - 32 ); //假设此时$(window).height()为X
$("#wrap,#gvDiv,#divSplit").height( $(window).height() - 32 ); //IE6下,需执行两遍才能填满页面,WHY?? 此时$(window).height()为X+17

onBMSC(
null,$("#TV_BM").find(".bmNodeCls").get(0) );
});


function toggleTree(){
var left = 200, marginLeft = 210, title = "隐藏部门树";
if($('#bmDiv').is(":visible")){
left
= 0;
marginLeft
= 10;
title
= "展开部门树";
}
$(
'#bmDiv').toggle().is(":visible"); //IE6下,无is(":visible"),则隐藏后不会再显示。。。马了搁笔
$('#divSplit').css('left',left);
$(
'#gvDiv').css('margin-left',marginLeft);
$(
'#splitImg').attr("title", title);
}

 

posted @ 2010-09-28 12:10 水无声 阅读(207) 评论(0) 编辑

2010年9月26日

1、获取页面可视区域的高度(在$(document).ready()的函数相应时):
IE6: 使用$(window).height(),而$(document).height()值高于实际可视区域高度

其他: $(window).height(),$(document).height()均可

 

2、绝对定位分栏

当使用绝对定位进行分左右两栏显示时,父元素(.wrap)须设:width:100%,以兼容IE6

<style type="text/css">
        .wrap
        {
        	position: relative;
        	width:100%;
        }
        #divTree
        {
        	position:absolute;
        	left:0;
        	top:0;
        	width:250px;
        	border-right:2px gray inset;
        }
        
        #divFrame
        {
        	margin-left:253px;
        }
 </style>


<div class="wrap">
        <div id="divTree">
             左边栏
        </div>
        <div id="divFrame">
            右边栏
        </div>
    </div>

posted @ 2010-09-26 09:16 水无声 阅读(102) 评论(0) 编辑

2010年8月10日

封装类

 

using System;
using System.Data;
using System.Runtime.InteropServices;

/// <summary>
/// 非托管DLL调用类
/// </summary>
public class DllInvoke
{
    private IntPtr hLib;

    [DllImport("kernel32.dll")]
    private extern static IntPtr LoadLibrary(string path);
    [DllImport("kernel32.dll")]
    private extern static IntPtr GetProcAddress(IntPtr lib, string funcName);
    [DllImport("kernel32.dll")]
    private extern static bool FreeLibrary(IntPtr lib);

    /// <summary>
    /// dll存放的绝对路径
    /// </summary>
    /// <param name="DLLPath"></param>
    public DllInvoke(string DLLPath)
    {
        hLib = LoadLibrary(DLLPath);
    }
    ~DllInvoke()
    {
        FreeLibrary(hLib);
    }

    /// <summary>
    /// 释放dll的资源
    /// </summary>
    public void FreeLib()
    {
        FreeLibrary(hLib);
    }

    /// <summary>
    /// 创建dll中函数的委托函数
    /// </summary>
    /// <param name="APIName">要调用的dll的函数</param>
    /// <param name="t">委托函数的类型</param>
    /// <returns></returns>
 
    public Delegate Invoke(string APIName, Type t)
    {
        IntPtr api = GetProcAddress(hLib, APIName);
        return (Delegate)Marshal.GetDelegateForFunctionPointer(api, t);
    }
}

应用以上方式,可以把非托管的dll放在网站的目录下,用相对路径进行调用。

需要特别注意的是,在部署到IIS上时,需要设置相应应用程序池的标识,否则调用会报错:IIS7(windows7)设置为管理员的账号密码,IIS6设置为本地服务即可

 

posted @ 2010-08-10 18:29 水无声 阅读(798) 评论(0) 编辑

2010年5月10日

摘要: [正则表达式]文本框输入内容控制默认分类 2009-02-13 10:10 阅读26 评论0字号: 大大 中中 小小整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$"。只能输入n位的数字:"^\d{n}$"。只能输入至少n位的数字:"^\d{n,}$"。只能输入m~n位的数字:。"^\d{m,n}$"只能输入零和非零开头的数字:"^(0|[1-9][...阅读全文

posted @ 2010-05-10 21:29 水无声 阅读(122) 评论(0) 编辑

2010年5月8日

摘要: Technorati 标签: 架构设计,设计模式 项目开发-让设计模式成为一种心智-深入理解三层架构 前言:在开发的时候我们常常讨论有关设计模式方面的东西,也学习了不少设计模式,而且也可以写出设计模式的一些演示的代码,但是在真正开发的时候,有时却显得很无能为力,而且觉得用不用都差不多,就算是勉强的用了,也不见得把代码改善了多少。 用不用设计模式,很多时候不是我们说了算的,因为很多的设计,在我们上面...阅读全文

posted @ 2010-05-08 19:49 水无声 阅读(22) 评论(0) 编辑