我正在使用css伪元素:before和:after对网站上的一些图像给出缩进效果.但是,如果不指定宽度和高度,则不会显示这些内容.这将让我为每个图像指定固定的宽度和高度,我想这对静态网页是有用的.
但是,因为这些图像是使用jQuery动态生成的并且是用户提交的,所以每次图像的宽度和高度都不同.现在我可以通过从图像获取宽度并将其传递给:之前的Javascript来解决这个问题,但这似乎对于像这样的事情来说太多了.
我的问题是,如果有一种方法只使用CSS,要将包含图像的宽度传递给:在此<li>之前,以便:before和:after伪元素继承宽度和原始元素的高度.
基本页面布局:
<ul>
   <li>
       <img src="foo" />
   </li>   
</ul>    
# css style simplefied
ul{ float:left; list-style:none}
li{float:left;}
li img{float:left}
li:before{
          content:"":
          position:relative;
          position:absolute;
          float:left;   
          box-shadow:0 1px 2px rgba(0,0,0,0.4);   
}
Run Code Online (Sandbox Code Playgroud)
PS:所需的兼容性仅适用于移动Webkit浏览器.
编辑
我可以通过使用以下行使用Javascript向CSS添加行:
var heightImg = (($('ul li:nth-child(n)').height())) + 'px';    
document.styleSheets[1].insertRule('ul li:before { height: ' +  heightImg+ '; }', 0);
Run Code Online (Sandbox Code Playgroud)
但这意味着我还必须使用动态id.这不会很难,但我只是想知道是否只有CSS方式.
我正在开发一个Web应用程序,它的行为非常类似于iOS和Android的本机应用程序.然而,Javascript文件(jQuery +我自己的)和css文件一起用于移动使用,如果用户没有启用3G,这会使应用程序加载缓慢.
因此我开始考虑离线存储这些文件.然而,除了cache.manifest(据我所知,只有当没有互联网连接启用离线使用时才开始),我找不到这个.理想情况下,我想检查文件是否已经缓存/存储,如果没有,请使用它们,然后再存储它们.
这可能吗?这将减少加载我的应用程序的时间,因为索引文件本身非常小.我仍在努力通过优化减少文件,但在此期间这将有很大帮助.
只是为了提供更多的细节,对不起我以前不清楚.
我已经开始使用HTML5样板构建这个webapp,我的.htaccess文件包含所有JS和CSS文件头,有效期为1年.
但似乎从iOS主屏幕打开应用程序每次都会加载.js和.css文件,就像它们没有被缓存一样.在桌面或甚至iOS Safari Web浏览器上打开网站似乎确实以正确的方式缓存文件,因为Javascript和CSS中的更改仅在手动刷新页面后显示.
看起来打开和关闭以及从主屏幕打开网络应用程序充当刷新,因此每次加载文件,即使它们是通过cache.manifest存储以供离线使用,文件的到期日期是远远落后于未来.
以为我会包含文件的缓存标头.这些似乎没问题.
Cache-Control max-age = 31536000,public 
Expires Fri,2012年5月18日17:34:20 GMT 
Vary Accept-Encoding,User-Agent 
Content-Encoding gzip Keep-Alive timeout = 2,max = 98
我正在尝试构建一个应用程序,让我的注册用户可以登录Facebook Places上的位置.然而,由于某种原因,我似乎无法使这项工作.我认为这是可能的Api因为已经添加了写入功能,但我在网上找不到清晰的解释.在我要求用户发布签名和user_checkins的权限之后,这就是我目前所拥有的.
<?php
require("src/facebook.php");
$facebook = new Facebook(array(
'appId'  => 'xxxxxxxxx',
'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'cookie' => true
));
# see if active session
$session = $facebook->getSession();
if(!empty($session)) {
try{
$uid = $facebook->getUser();
$api_call = array(
'method' => 'users.hasAppPermission',
'uid' => $uid,
'ext_perm' => 'publish_checkins'
 );
 $can_post = $facebook->api($api_call);
 if($can_post){
 $facebook->api('/'.$uid.'/checkins', 'POST', array(
   'access_token' => $facebook->getAccessToken(),
   'place' => 'place_id',
   'message' =>'I went to placename today',
   'picture' => 'http://www.place.com/logo.jpg',
   'coordinates' => array(
    'latitude'  => 'lattiude',
    'longitude' => 'lattitude',
    'tags' => $uid,
   ) …Run Code Online (Sandbox Code Playgroud) 我已经放弃了这个问题,因为我怀疑某些东西破坏了我的设置,导致了问题,并从那时起创建了一个新服务器。我认为发现问题比启动新服务器并设置它要花费更多的时间。不过,我仍然有兴趣找出导致此问题的原因,因为它完美运行了 3 个月,直到周末才开始出现这些症状。**
=================================================== =============================
我遇到了一些初学者问题,可能是因为过去几个月我一直在使用其他语言,但我似乎无法找出为什么这不起作用。我编写了一个非常简单的脚本来测试它,如下所示:
<?php session_start();
  print_r($_SESSION);
  if(isset($_SESSION['views'])){
      $_SESSION['views'] = $_SESSION['views']+ 1;
  }
  else{
      $_SESSION['views'] = 1;
  }
  echo "views = ". $_SESSION['views'];
  echo '<p><a href="">Refresh</a></p>';
  # for testing
  var_dump($_SESSION);
?>
Run Code Online (Sandbox Code Playgroud)
发生的情况是,var_dump 显示创建了一个会话,其键为views,值为1。但是,当刷新页面时,没有找到活动会话,并且views 键再次设置为1。
现在对我来说奇怪的是在PHPSESSID下创建了一个会话id。我尝试检查存储会话的路径是否可写,并且确实如此。页面返回的header如下:
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public
Connection  close
Content-Encoding    gzip
Content-Length  68
Content-Type    text/html; charset=utf-8
Date    Wed, 18 Jan 2012 13:03:34 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Pragma  no-cache
Server  Apache
Vary    Accept-Encoding
X-UA-Compatible IE=Edge,chrome=1
Run Code Online (Sandbox Code Playgroud)
在请求标头中,会话 cookie 的发送方式如下:
 Cookie PHPSESSID=0e1416r7pun3pamvc7cp8mjat3 …Run Code Online (Sandbox Code Playgroud)