js實(shí)現(xiàn)黑白div塊畫(huà)空心的圖形
本文實(shí)例為大家分享了js實(shí)現(xiàn)黑白div塊畫(huà)空心圖形的具體代碼,供大家參考,具體內(nèi)容如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>starts picture</title>
<link rel="stylesheet" href="main.css" rel="external nofollow" >
</head>
<body>
<script type="text/javascript">
/* 打印實(shí)心矩形,思路:兩個(gè)for循環(huán)嵌套,外面for循環(huán) + 換行符實(shí)現(xiàn)打印n行;
內(nèi)部for循環(huán)實(shí)現(xiàn)打印n個(gè)星號(hào); */
function juxing(n){ //打印矩形,傳入?yún)?shù)為行數(shù)(矩形高),作用域預(yù)解析時(shí)會(huì)聲明傳入?yún)?shù),無(wú)需 var n = a; 聲明多余的變量
for(var i=1; i<=n; i++){
for(var j=1; j<=n; j++){ //for循環(huán)嵌套實(shí)現(xiàn),每行打印n個(gè)'*';
document.write('<div class="black"></div>');
}
document.write('<br/>'); //打印換行符,實(shí)現(xiàn)換行,不然全部在一行
}
}
juxing(4);
/* 打印空心矩形,
****
* *
* *
****
思路:內(nèi)部for循環(huán)打印信號(hào)時(shí)加上序號(hào)判斷,
具體情況:
1、第一行 或 最后一行的所有序號(hào) 打印星號(hào)
2、第二行至倒數(shù)第二行的第一個(gè)序號(hào) 或 最后一個(gè)序號(hào) 打印星號(hào)
3、第二行至倒數(shù)第二行中間全部序號(hào) 打印空格
' ' 注意HTML中字符實(shí)體都是以 &開(kāi)頭 ;結(jié)尾 */
function kongxinjuxing(n){
for(var i=1; i<=n; i++){
for(var j=1; j<=n; j++){
if(i==1 || i==n){
document.write('<div class="black"></div>');
}else if(j==1 || j==n){
document.write('<div class="black"></div>');
}else{
document.write('<div class="white"></div>');
}
}
document.write('<br/>');
}
}
kongxinjuxing(8);
/* 打印實(shí)心正三角形
..*
.***
*****
思路:兩個(gè)for循環(huán)嵌套;外部for循環(huán)實(shí)現(xiàn)n行;
內(nèi)部第一個(gè)for循環(huán),先打印n-i個(gè)空格
內(nèi)部第二個(gè)for循環(huán),再繼續(xù)打印2*i-1個(gè)星號(hào)
*/
function zhengsanjiaoxing(n){
for(var i=1; i<=n; i++){
for(var j=1; j<=n-i; j++){
document.write('<div class="white"></div>');
}
for(var k=1; k<=2*i-1; k++){
document.write('<div class="black"></div>');
}
document.write('<br/>');
}
}
zhengsanjiaoxing(4);
document.write('<br/>');
document.write('<br/>');
/*打印空心三角形
*
* *
* *
*******
思路:內(nèi)部第二個(gè)for循環(huán)打印星號(hào)時(shí)判斷序號(hào)
具體情況:
1、最后一行每個(gè)序號(hào)都打印星號(hào)
2、第一行至倒數(shù)第二行中 第一個(gè) 或 最后一個(gè) 打印星號(hào)
3、其他打印空格
*/
function kongxinzhengsanjiaoxing(n){
for(var i=1; i<=n; i++){
for(var j=1; j<=n-i; j++){
document.write('<div class="white"></div>');
}
for(var k=1; k<=2*i-1; k++){
if(i==n){ //判斷如果是最后一行就每個(gè)序號(hào)都打星號(hào)
document.write('<div class="black"></div>');
}else if(k==1 || k==2*i-1){ //判斷如果是第一個(gè) 或 最后一個(gè)序號(hào),打印星號(hào)
document.write('<div class="black"></div>');
}else{ //其他為序號(hào)打印空格
document.write('<div class="white"></div>');
}
}
document.write('<br/>');
}
}
kongxinzhengsanjiaoxing(9);
/*
打印實(shí)心菱形
思路:先打印上面 (n+1)/2 行的正三角形,再打印下面 (n+1)/2-1 行的倒過(guò)來(lái)的正三角形
*/
function lingxing(n){
for(var i=1; i<=(n+1)/2; i++){ //打印上半個(gè)三角形,行數(shù)為(n+1)/2
for(var j=1; j<=(n+1)/2-i; j++){
document.write('<div class="white"></div>');
}
for(var k=1; k<=2*i-1; k++){
document.write('<div class="black"></div>');
}
document.write('<br/>');
}
for(var l=1; l<=(n+1)/2-1; l++){ //打印下半個(gè)倒三角形,行數(shù)為(n+1)/2-1 要比上半個(gè)少一行
for(var m=1; m<=l; m++){
document.write('<div class="white"></div>');
}
//再繼續(xù)打印星號(hào),每行是的星號(hào)個(gè)數(shù)是行數(shù)倒序的二倍減一,即(((n+1)/2-1+1)-l)*2-1
for(var o=1; o<=((n+1)/2-l)*2-1; o++){
document.write('<div class="black"></div>');
}
document.write('<br/>');
}
}
lingxing(9);
/*
打印空心菱形
*/
function kongxinlingxing(n){
for(var i=0; i<=(n+1)/2; i++){ //打印上部分三角形
for(var j=1; j<=(n+1)/2-i; j++){
document.write('<div class="white"></div>');
}
for(var k=1; k<=2*i-1; k++){
if(k==1 || k==2*i-1){
document.write('<div class="black"></div>'); //每行第一個(gè)序號(hào) 或 最后一個(gè)序號(hào)打印星號(hào)
}else{
document.write('<div class="white"></div>');
}
}
document.write('<br/>');
}
for(var l=1; l<=(n+1)/2-1; l++){ //打印下面的三角形
for(var m=1; m<=l; m++){
document.write('<div class="white"></div>');
}
for(var o=1; o<=((n+1)/2-l)*2-1; o++){
if(o==1 || o==((n+1)/2-l)*2-1){
document.write('<div class="black"></div>');
}else{
document.write('<div class="white"></div>');
}
}
document.write('<br/>');
}
}
kongxinlingxing(7);
/*
打印實(shí)心圓形
*/
function circle(r){
for(var i=1; i<=r; i++){ //畫(huà)上半個(gè)圓
var n = Math.round(Math.sqrt(r*r-(r-i)*(r-i)));
for(var j=1; j<=r-n; j++){
document.write('<div class="whitemin"></div>');
}
for(var k=1; k<=2*n; k++){
document.write('<div class="blackmin"></div>');
}
document.write('<br/>');
}
for(var l=1; l<=r; l++){
var m =Math.round(Math.sqrt(r*r-l*l));
for(var o=1; o<=r-m; o++){
document.write('<div class="whitemin"></div>');
}
for(var q=1; q<=2*m; q++){
document.write('<div class="blackmin"></div>');
}
document.write('<br/>');
}
}
circle(66);
/*
打印空心圓形
*/
function kongxinCircle(r){
for(var i=1; i<=r; i++){ //畫(huà)上半個(gè)圓
var w = Math.sqrt(r*r-(r-i)*(r-i));
var n = Math.round(w);
var diff = w - n;
if(diff >= 0.2){
n += 1;
}
console.log(w);
console.log(n);
for(var j=1; j<=r-n; j++){
document.write('<div class="whitemin"></div>');
}
for(var k=1; k<=2*n; k++){
if(i==1){
document.write('<div class="blackmin"></div>');
}else if(k==1 || k==2*n){
document.write('<div class="blackmin"></div>');
}else{
document.write('<div class="whitemin"></div>');
}
}
document.write('<br/>');
}
for(var l=1; l<=r; l++){
var m = Math.round(Math.sqrt(r*r-l*l));
for(var o=1; o<=r-m; o++){
document.write('<div class="whitemin"></div>');
}
for(var q=1; q<=2*m; q++){
if(l>=r-1){
document.write('<div class="blackmin"></div>');
}else if(q==1 || q==2*m){
document.write('<div class="blackmin"></div>');
}else{
document.write('<div class="whitemin"></div>');
}
}
document.write('<br/>');
}
}
kongxinCircle(66);
</script>
</body>
</html>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
簡(jiǎn)單聊聊JavaScript中作用域與自執(zhí)行函數(shù)的使用
作用域指的是一個(gè)變量的作用范圍,自執(zhí)行函數(shù)是指定義后立即執(zhí)行的函數(shù),它可以被用來(lái)創(chuàng)建一個(gè)私有作用域,本文主要來(lái)和大家聊聊二者的具體定義與使用,感興趣的可以了解下2024-03-03
Webpack框架核心概念(知識(shí)點(diǎn)整理)
webpack 是一個(gè)現(xiàn)代 JavaScript 應(yīng)用程序的模塊打包器(module bundler)。這篇文章主要介紹了Webpack框架核心概念(知識(shí)點(diǎn)整理),需要的朋友可以參考下2017-12-12
JS編寫(xiě)函數(shù)實(shí)現(xiàn)對(duì)身份證號(hào)碼最后一位的驗(yàn)證功能
二代身份證號(hào)碼為18位,怎么編寫(xiě)函數(shù)實(shí)現(xiàn)對(duì)身份證號(hào)碼最后一位的驗(yàn)證功能呢?今天小編通過(guò)代碼給大家分享下實(shí)現(xiàn)方法2016-12-12
js實(shí)現(xiàn)自定義滾動(dòng)條的示例
這篇文章主要介紹了js實(shí)現(xiàn)自定義滾動(dòng)條的示例,幫助大家制作JS特效,美化自身網(wǎng)頁(yè),感興趣的朋友可以了解下2020-10-10
JS公共小方法之判斷對(duì)象是否為domElement的實(shí)例
下面小編就為大家?guī)?lái)一篇JS公共小方法之判斷對(duì)象是否為domElement的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
echarts圖表無(wú)數(shù)據(jù)/空數(shù)據(jù)如何展示"暫無(wú)數(shù)據(jù)"
在開(kāi)發(fā)echarts的時(shí)候我們不得不考慮數(shù)據(jù)為空的情況,其實(shí)有很多種解決辦法,下面這篇文章主要給大家介紹了關(guān)于echarts圖表無(wú)數(shù)據(jù)/空數(shù)據(jù)如何展示“暫無(wú)數(shù)據(jù)”的相關(guān)資料,需要的朋友可以參考下2022-10-10

