рдбреА 3 рдХрд╛ рдкрд░рд┐рдЪрдп


рдбреЗрдЯрд╛ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП D3.js (рдпрд╛ рд╕рд┐рд░реНрдл рдбреА 3) рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рдПрд░реЗ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдФрд░ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ DOM рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдиреЛрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдореВрд▓ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рддрд░реНрдХ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рд╡рд┐рд╕рд░реНрдЬрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред

рд▓реЗрдЦ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП JS, HTML рдФрд░ CSS рдХрд╛ рдЬреНрдЮрд╛рди рдЙрдкрдпреЛрдЧреА рд╣реИред


рджреНрд░рд╡рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕


рдбреА 3 рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╛рдордХ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдХреЛрдб рдкрдврд╝рддреЗ рд╕рдордп, рдпрд╣ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреЛ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд┐рдЫрд▓реА рд╡рд┐рдзрд┐ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ рд╕реНрдерд┐рдд рд╣реИ:

d3.select('body') //    body .append('svg') //   body svg- .append('text') //   svg-  text .text('Click somewhere, please...') //     text .attr('x', 50) //    text .attr('y', 50) .style("fill","firebrick") //    

рдпрд╣ рдЙрджрд╛рд╣рд░рдг jsfiddle.net рдкрд░ рд╣реИ

рдирдореВрдирд╛


рдбреА 3 рдореЗрдВ, рдЕрдиреНрдп рдЬреЗрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдбреЛрдо рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рдЦреЛрдЬ рдФрд░ рдЪрдпрди рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ - рддрддреНрд╡реЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдгред рдпрд╣ рдЪрдпрдирд┐рдд рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдзрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдбреА 3 рдореЗрдВ рдЪрдпрди d3.select () рдФрд░ d3.selectAll () рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдЪрдпрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдпрд╣ рдПрдХ рдкреГрд╖реНрда рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, jQuery рдХреЗ рд╕рд╛рде) рддреЛ рдбреА 3, рдХреНрд╡реЗрд░реАрд╕реЗрд▓рд░ / рдХреНрд╡реЗрд░реАрд╕реЗрд▓реЗрдХреНрдЯрд░ рдСрд▓ рдпрд╛ рд╕рд┐рдЬрд╝рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
 d3.select('span') //   span   d3.selectAll('span') //   span   

рдкрд░рд┐рдгрд╛рдореА рдЪрдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рд╕рдмрд╕рд┐рд▓реЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 <span> </span> <p> <span> </span> <span></span> <span></span> <span></span> </p> <p> </p> 

 d3.select('span') //   span   .style('color', 'darkgreen') //   d3.selectAll('p') //    .selectAll('span') //   span   . .style('color', 'goldenrod') //   d3.select('p') //      .select('span') //   span    .style('color', 'firebrick') //   

рдпрд╣ рдЙрджрд╛рд╣рд░рдг jsfiddle.net рдкрд░ рд╣реИ

рд╣рдореЗрд╢рд╛ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд┐рд╕ рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдбреА 3 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ: рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдореВрд▓ рддрддреНрд╡ рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рдФрд░ рдПрдХ рдиреЙрдирдХрдВрд╕реНрдЯреЗрдВрдЯ (рд╣рдЯрд╛рдП рдЧрдП рдпрд╛ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдирд╛рдП рдЧрдП) рддрддреНрд╡ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ред

рдЙрджрд╛рд╣рд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрддреНрд╡реЛрдВ ( рдЪрдпрди (рдирд╛рдо, рдореВрд▓реНрдп]) ) рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рдорд╛рди рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕


DOM рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, D3 рд╕рднреА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдХрд╛рд░реНрдп рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ: рдХрд┐рд╕реА рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдЬреЛрдбрд╝рдирд╛ рдпрд╛ рдирд┐рдХрд╛рд▓рдирд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреБрдЫ рдирдореВрдиреЗ рд▓реЗрдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 var pressed = false var button = d3.select('button') //   .on('click', function (data, index) { //     button.classed('pressed', pressed = !pressed) //         }) 

рдпрд╣ рдЙрджрд╛рд╣рд░рдг jsfiddle.net рдкрд░ рд╣реИ

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдмрдЯрди рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдЪрдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рдХреЙрд▓ (рд╕рд╛рде рд╣реА рд╡рд░реНрдЧреАрдХреГрдд, рдПрдЯрд░, рд╕реНрдЯрд╛рдЗрд▓, рдкреНрд░реЙрдкрд░реНрдЯреА, рдПрдЪрдЯреАрдПрдордПрд▓, рдЯреЗрдХреНрд╕реНрдЯ) рдЙрд╕ рдЪрдпрди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ "рджреНрд░рд╡" рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред

рдбреА 3 рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ [рдореВрд▓реНрдп] рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ:


рдЕрдВрддрд┐рдо рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдпрджрд┐ рдЖрдк рдХреЙрд▓ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЧреЗрдЯрд░ рдЖрдорддреМрд░ рдкрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЕрдВрддрд┐рдо рддрддреНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЪрдпрди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдореВрд▓реНрдпреЛрдВ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдбреА 3 рдЙрдиреНрд╣реЗрдВ "рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИ"ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдпрд╛ рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдбреА 3 рдХреЛ "рдкреБрдирд░реНрдЧрдгрдирд╛" рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдКрдкрд░ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдерд╛ред

рдлрд╝рдВрдХреНрд╢рди (рдбреЗрдЯрд╛ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕) рдХреЗ рддрд░реНрдХреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдЙрдирдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рд╣реИ: рд╕реВрдЪрдХрд╛рдВрдХ рдЪрдпрди рдореЗрдВ рддрддреНрд╡ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рддрддреНрд╡ рд╣реИред рдирдореВрдиреЗ рдкрд░ рдмреБрд▓рд╛рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдбреА 3 рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрдмрдВрдзреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирдореВрдирд╛рдХрд░рдг


рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЪрдпрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдбреЛрдо рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдП:
 var svg = d3.select('body').append('svg') svg .append('text') .text('click somewhere') .attr('x', 50) .attr('y', 50) var events = [] svg.on('click', function () { events.push(d3.event) if (events.length > 5) events.shift() var circles = svg.selectAll('circle') .data(events, function (e) { return e.timeStamp }) .attr('fill', 'gray') circles .enter() .append('circle') .attr('cx', function (d) { return dx || d.pageX }) .attr('cy', function (d) { return dy || d.pageY }) .attr('fill', 'red') .attr('r', 10) circles .exit() .remove() }) 

рдпрд╣ рдЙрджрд╛рд╣рд░рдг jsfiddle.net рдкрд░ рд╣реИ



рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрдЯ


рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдбреЗрдЯрд╛ () рдкрджреНрдзрддрд┐ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдЪрдпрди рджреЗрддрд╛ рд╣реИ рдЬреЛ рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддрддреНрд╡реЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЬреЙрдЗрдирд┐рдВрдЧ рд╡рд┐рде рдЬреЙрдЗрдиреНрд╕ рдХреЗ рд▓реЗрдЦ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдореЗрдВ , рд╣рдо рдкреНрд░рд╡реЗрд╢ () рдФрд░ рдирд┐рдХрд╛рд╕ () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрдпрди рдФрд░ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдПрдирд┐рдореЗрд╢рди рдФрд░ рдЕрдиреБрдХреВрд▓рди


рдбреА 3 рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЪреЗрддрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЖрдкрдХреЛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЯреНрд░рд╛рдиреНрд╕рдЯреНрд░реИрдХреНрд╢рди () рд╡рд┐рдзрд┐ред рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рдЪрдпрди рджреЗрддрд╛ рд╣реИ рдЬреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рд╡рд░реНрддрдорд╛рди рдорд╛рдиреЛрдВ рдХреЛ рдирдП рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рдПрдХ рдПрдирд┐рдореЗрдЯреЗрдб рдкреНрд░рднрд╛рд╡ рдмрдирд╛рддрд╛ рд╣реИред рдПрдиреАрдореЗрд╢рди рдХреА рдЕрд╡рдзрд┐ рдЯреНрд░рд╛рдВрдЬрд╝рд┐рд╢рди ред рдЕрд╡рдзрд┐ () рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХреА рдЧрдИ рд╣реИред

рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдПрдиреАрдореЗрд╢рди рдЬреЛрдбрд╝реЗрдВ:

 var svg = d3.select('body').append('svg') svg .append('text') .text('click here') .attr('x', 50) .attr('y', 50) var events = [] svg.on('click', function () { events.push(d3.event) if (events.length > 5) events.shift() var circles = svg.selectAll('circle') .data(events, function (e) { return e.timeStamp }) .attr('fill', 'gray') circles .enter() .append('circle') .attr('cx', function (d) { return dx || d.pageX }) .attr('cy', function (d) { return dy || d.pageY }) .attr('fill', 'red') .attr('r', 0) //   .transition() .duration(1000) //        .attr('r', 10) //   circles .exit() .transition() .attr('r', 0) .remove() }) 

рдпрд╣ рдЙрджрд╛рд╣рд░рдг jsfiddle.net рдкрд░ рд╣реИ

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдбреА 3 рдХреА рдирдореВрдирд╛ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред рдореИрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ, рдПрд╕рд╡реАрдЬреА рддрддреНрд╡реЛрдВ рдХреЗ рд╕реЗрдЯ рдФрд░ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рддрддреНрд╡реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреЛрдЯ рд╕рдорд░реНрдкрд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ рдкрд╛рдареНрдпрдХреНрд░рдо "рдбреЗрдЯрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди" рдкрд░ рдбреА 3 рдкрдврд╝рд╛рддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЙрдкрдХрд░рдг рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рд▓рдЧрд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдЗрдПред рдЕрдЧрд▓рд╛ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЙрд╕реНрдХреЛ рдореЗрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдФрд░ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЬрдирд╡рд░реА рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ: http://brainwashing.pro/datoliz ред

Source: https://habr.com/ru/post/In217905/


All Articles