
рдбреЗрдЯрд╛ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП D3.js (рдпрд╛ рд╕рд┐рд░реНрдл рдбреА 3) рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рдПрд░реЗ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдФрд░ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ DOM рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдиреЛрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдореВрд▓ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рддрд░реНрдХ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рд╡рд┐рд╕рд░реНрдЬрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред
рд▓реЗрдЦ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП JS, HTML рдФрд░ CSS рдХрд╛ рдЬреНрдЮрд╛рди рдЙрдкрдпреЛрдЧреА рд╣реИред
рджреНрд░рд╡рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕
рдбреА 3 рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╛рдордХ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдХреЛрдб рдкрдврд╝рддреЗ рд╕рдордп, рдпрд╣ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреЛ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд┐рдЫрд▓реА рд╡рд┐рдзрд┐ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ рд╕реНрдерд┐рдд рд╣реИ:
d3.select('body')
рдпрд╣ рдЙрджрд╛рд╣рд░рдг jsfiddle.net рдкрд░ рд╣реИрдирдореВрдирд╛
рдбреА 3 рдореЗрдВ, рдЕрдиреНрдп рдЬреЗрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдбреЛрдо рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рдЦреЛрдЬ рдФрд░
рдЪрдпрди рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ - рддрддреНрд╡реЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдгред рдпрд╣ рдЪрдпрдирд┐рдд рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдзрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдбреА 3 рдореЗрдВ
рдЪрдпрди d3.select () рдФрд░
d3.selectAll () рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдЪрдпрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдпрд╣ рдПрдХ рдкреГрд╖реНрда рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, jQuery рдХреЗ рд╕рд╛рде) рддреЛ рдбреА 3, рдХреНрд╡реЗрд░реАрд╕реЗрд▓рд░ / рдХреНрд╡реЗрд░реАрд╕реЗрд▓реЗрдХреНрдЯрд░ рдСрд▓ рдпрд╛ рд╕рд┐рдЬрд╝рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
d3.select('span')
рдкрд░рд┐рдгрд╛рдореА рдЪрдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рд╕рдмрд╕рд┐рд▓реЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
<span> </span> <p> <span> </span> <span></span> <span></span> <span></span> </p> <p> </p>
d3.select('span')
рдпрд╣ рдЙрджрд╛рд╣рд░рдг jsfiddle.net рдкрд░ рд╣реИрд╣рдореЗрд╢рд╛ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд┐рд╕ рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдбреА 3 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ: рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдореВрд▓ рддрддреНрд╡ рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рдФрд░ рдПрдХ рдиреЙрдирдХрдВрд╕реНрдЯреЗрдВрдЯ (рд╣рдЯрд╛рдП рдЧрдП рдпрд╛ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдирд╛рдП рдЧрдП) рддрддреНрд╡ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ред
рдЙрджрд╛рд╣рд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрддреНрд╡реЛрдВ (
рдЪрдпрди (рдирд╛рдо, рдореВрд▓реНрдп]) ) рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рдорд╛рди рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕
DOM рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, D3 рд╕рднреА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдХрд╛рд░реНрдп рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ: рдХрд┐рд╕реА рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдЬреЛрдбрд╝рдирд╛ рдпрд╛ рдирд┐рдХрд╛рд▓рдирд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреБрдЫ рдирдореВрдиреЗ рд▓реЗрдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдЪрдпрди.рд╡рд░реНрдЧреАрдп (рдирд╛рдо, рдорд╛рди) рдмреВрд▓рд┐рдпрди рдорд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд░реНрдЧ рдирд╛рдо рдЬреЛрдбрд╝рддрд╛ рдпрд╛ рд╣рдЯрд╛рддрд╛ рд╣реИред
- рдЪрдпрди.рдСрди (рдИрд╡реЗрдВрдЯ, рдХреЙрд▓рдмреИрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдИрд╡реЗрдВрдЯ рдЗрд╡реЗрдВрдЯ рдХрд╛ рдирд╛рдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдХреНрд▓рд┐рдХ") рдФрд░ рдХреЙрд▓рдмреИрдХ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ред рдЗрд╕рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рд╡рд░реНрддрдорд╛рди рддрддреНрд╡ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рддрд░реНрдХреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдШрдЯрдирд╛ рдХреЛ рдЪрд░ d3.event рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣реИрдВрдбрд▓рд░ рдХреЛ рд░рд┐рдЗрдВрд╕реНрдЯрд╛рд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
var pressed = false var button = d3.select('button')
рдпрд╣ рдЙрджрд╛рд╣рд░рдг 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 рдкрд░ рд╣реИ- рдЪрдпрди .html () рдФрд░ рдЪрдпрди.рдЯреЗрдХреНрд╕реНрдЯ () рдкрджреНрдзрддрд┐рдпрд╛рдБ HTML рдпрд╛ рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реЗрдЯ рдпрд╛ рд╡рд╛рдкрд╕ рдХрд░рддреА рд╣реИрдВред
- рдЪрдпрди.рд╕реНрдЯрд╛рдЗрд▓ () , рд╕реЗрд▓реЗрдХреНрд╢рди.рдЯреИрдЯ (), рдФрд░ рд╕реЗрд▓реЗрдХреНрд╢рди.рдкреНрд░реЛрдкрд░реНрдЯреА () рд╡рд┐рдзрд┐рдпрд╛рдБ рддрддреНрд╡ рдХреЗ рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ, рдЙрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдпрд╛ рд╡рд╛рдкрд╕ рдХрд░рддреА рд╣реИрдВред рдЕрдХреНрд╕рд░ рд╣рдо рд╢реИрд▓реА рдФрд░ рдЕрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдирдП рддрддреНрд╡реЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
- рдЪрдпрди.рдЖрд░реНрдореЛрд╡ () рд╡рд┐рдзрд┐ рд╡рд░реНрддрдорд╛рди рдЪрдпрди рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред
- Selection.append () рд╡рд░реНрддрдорд╛рди рдЪрдпрди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ рдПрдХ рд╡рдВрд╢рдЬ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
- рдбреЗрдЯрд╛ рдХреЛ Selection.data () рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╣ DOM рддрддреНрд╡ рдХреЗ __data__ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдЖрдк рдЪрдпрди рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рддрддреНрд╡ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЖрдк рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрдЯ
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ,
рдбреЗрдЯрд╛ () рдкрджреНрдзрддрд┐ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдЪрдпрди рджреЗрддрд╛ рд╣реИ рдЬреЛ рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддрддреНрд╡реЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
рдЬреЙрдЗрдирд┐рдВрдЧ рд╡рд┐рде рдЬреЙрдЗрдиреНрд╕ рдХреЗ рд▓реЗрдЦ рдХреЗ
рдЕрдиреБрд╡рд╛рдж рдореЗрдВ , рд╣рдо
рдкреНрд░рд╡реЗрд╢ () рдФрд░
рдирд┐рдХрд╛рд╕ () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрдпрди рдФрд░ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рдПрдирд┐рдореЗрд╢рди рдФрд░ рдЕрдиреБрдХреВрд▓рди
рдбреА 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)
рдпрд╣ рдЙрджрд╛рд╣рд░рдг jsfiddle.net рдкрд░ рд╣реИрдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдбреА 3 рдХреА рдирдореВрдирд╛ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред рдореИрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ, рдПрд╕рд╡реАрдЬреА рддрддреНрд╡реЛрдВ рдХреЗ рд╕реЗрдЯ рдФрд░ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рддрддреНрд╡реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреЛрдЯ рд╕рдорд░реНрдкрд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВ рдкрд╛рдареНрдпрдХреНрд░рдо "рдбреЗрдЯрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди" рдкрд░ рдбреА 3 рдкрдврд╝рд╛рддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЙрдкрдХрд░рдг рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рд▓рдЧрд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдЗрдПред рдЕрдЧрд▓рд╛ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЙрд╕реНрдХреЛ рдореЗрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдФрд░ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЬрдирд╡рд░реА рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ: http://brainwashing.pro/datoliz ред