[英]change the location of an element everytime the page is loaded
我有一個HTML頁面,上面有5張圖片(每張48px×48px) 。 我想在每次加載頁面時將圖像顯示在網頁上的隨機位置。
我不知道如何實現它,我只知道我需要CSS和JavaScript (用於隨機化) 。 有什么想法或建議嗎?
這是示例HTML代碼:
<a href="http://twitter.com/"><img alt="Twitter" src="/images/twitter-48.png" /></a>
<a href="http://facebook.com/><img alt="Facebook" src="/images/facebook-48.png" /></a>
<a href="https://plus.google.com/"><img alt="Google Plus" src="/images/plus-48.png" /></a>
<a href="https://github.com/"><img alt="GitHub" src="/images/github-48.png" /></a>
這是一個相當簡單的實現: http : //jsfiddle.net/Eu8wT/
$('div.randomizeme').css({
top: Math.random() * 100+'%',
left: Math.random() * 100+'%'
});
要將其應用於多個元素:
$('div.randomizeme').each(function(){
$(this).css({
top: Math.random() * 100+'%',
left: Math.random() * 100+'%'
});
});
這是沒有jQuery的情況:
var elements = document.querySelectorAll('.randomizeme');
for (var i in elements) {
elements[i].style.top = Math.random() * 100 + '%';
elements[i].style.left = Math.random() * 100 + '%';
}
使用純JavaScript(無庫)的解決方案
var imgs = document.querySelectorAll('.rand'),
len = imgs.length,
/* subtract the width/ height of images */
w = document.body.clientWidth - 48,
h = document.body.clientHeight - 48;
for(var i = 0; i < len; i++) {
imgs[i].style.top = Math.floor(Math.random() * h) + 'px';
imgs[i].style.left = Math.floor(Math.random() * w) + 'px';
}
假設您已經將圖像硬編碼到html文檔中。 您需要做的(如果要使用PHP完成此工作)是向每個元素添加一個style
屬性。 在你的情況,你的圖像保持內<a>
標簽,所以你要到位置<a>
標簽隨機而不是圖像...
function generateRandomPositions(){
// define maximum and minimum 'top' values
$maxTop = 1000;
$minTop = 0;
// define maximum and minimum 'left' values
$maxLeft = 1000;
$minLeft = 0;
$styleProperties = array(
'position:absolute',
'top:'.rand($minTop,$maxTop) . 'px',
'left:'.rand($minLeft,$maxLeft) . 'px'
);
return ' style="'.implode(';',$styleProperties).'" ';
}
該函數將返回類似於以下內容的字符串-
style="position:absolute;top:10px; left:45px;"
現在您要做的就是為頁面上的每個圖像調用此功能-
<a <?php echo generateRandomPositions();?> ><img src="...
<a <?php echo generateRandomPositions();?> ><img src="...
<a <?php echo generateRandomPositions();?> ><img src="...
<a <?php echo generateRandomPositions();?> ><img src="...
您的<a>
標記現在將包含隨機CSS定位參數,並且它們的圖像將隨它們一起移動。
正如我確定的那樣,使用PHP生成內聯CSS屬性的這種方法是一種向后的方式。 JavaScript可能是獲得所需內容的最佳方法,還有其他答案可以解決。 您可以首先使用CSS隱藏元素,然后在設置隨機位置后使用JavaScript顯示它們。
參考-
<?php
$images= array(
'twitter-48.png',
'facebook-48.png',
'plus-48.png',
'github-48.png'
);
$keys= range(0, count($images)- 1);
shuffle($keys);
foreach($keys as $key) {
print "<div>{$images[$key]}</div>";
}
編輯:
<?php
$images= array(
array('href'=> 'http://twitter.com/', 'alt'=> 'Twitter', 'src'=> '/images/twitter-48.png'),
array('href'=> 'http://facebook.com/', 'alt'=> 'Facebook', 'src'=> '/images/facebook-48.png'),
array('href'=> 'https://plus.google.com/', 'alt'=> 'Google Plus', 'src'=> '/images/plus-48.png'),
array('href'=> 'https://github.com/', 'alt'=> 'GitHub', 'src'=> '/images/github-48.png')
);
$keys= range(0, count($images)- 1);
shuffle($keys);
?>
<div class='location1'>
<a href='<?php print $images[$keys[0]]['href']; ?>'><img alt='<?php print $images[$keys[0]]['alt']; ?>' src='<?php print $images[$keys[0]]['src']; ?>'></img></a>
</div>
<div class='location2'>
<a href='<?php print $images[$keys[1]]['href']; ?>'><img alt='<?php print $images[$keys[1]]['alt']; ?>' src='<?php print $images[$keys[1]]['src']; ?>'></img></a>
</div>
<div class='location3'>
<a href='<?php print $images[$keys[2]]['href']; ?>'><img alt='<?php print $images[$keys[2]]['alt']; ?>' src='<?php print $images[$keys[2]]['src']; ?>'></img></a>
</div>
<div class='location4'>
<a href='<?php print $images[$keys[3]]['href']; ?>'><img alt='<?php print $images[$keys[3]]['alt']; ?>' src='<?php print $images[$keys[3]]['src']; ?>'></img></a>
</div>
嘗試這個:
$images = array('1.gif', '2.gif', '3.gif');
$images = array_shaffle($images);
foreach ($images as $image) {
echo "<img src='{$image}' />;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.