Кнопка в данном примере создана с помощью двух прямоугольников (rect) и градиента (linearGradient). Первый прямоугольник нужен ради темного окаймления, которое просматривается через полупрозрачный второй прямоугольник на переднем плане. Данное окаймление блекнет при нажатии на кнопку из-за увеличения непрозрачности (fill-opacity) переднего прямоугольника. Разумеется, можно создать и что-нибудь более интересное. Однако данный простой пример достаточно наглядно показывает, как утопить кнопку.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg xmlns="http://www.w3.org/2000/svg" width="230" height="75" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Кнопка</title> <style> <![CDATA[ text {font-size:16px; font-weight:bold; font-family:Arial } ]]> </style> <script type="text/javascript"> <![CDATA[ function down(){ // нажатие var x=document.getElementById('btn'); x.setAttribute("stroke-width","2px"); x.setAttribute("fill-opacity","0.9"); x.setAttribute("fill","#0090f0"); x=document.getElementById('shadow'); x.setAttribute("stroke-width","0"); } function up(){ // отпускание var x=document.getElementById('btn'); x.setAttribute("stroke-width","0px"); x.setAttribute("fill-opacity","0.8"); x.setAttribute("fill","url(#Grad)"); x=document.getElementById('shadow'); x.setAttribute("stroke-width","4"); } ]]> </script> <defs> <linearGradient id="Grad" x1="0%" y1="0%" x2="100%" y2="0%"> <stop offset="0" style="stop-color:#b7ddf8"/> <stop offset="100%" style="stop-color:#0090f0"/> </linearGradient> </defs> <desc>Кнопка</desc> <g onclick="alert('Да-да!')"> <desc>Тень</desc> <rect id="shadow" x="22" y="12" width="195" height="55" rx="8" ry="8" stroke="#c0c0c0" stroke-width="4" fill="#ffffff"/> <desc>Передний план</desc> <rect id="btn" x="20" y="10" width="200" height="60" rx="10" ry="10" fill="url(#Grad)" stroke="#909090" stroke-width="0" fill-opacity="0.8" onmousedown="down()" onmouseup="up()"/> <text x="110" y="43" fill="#ffffff" > OK </text> </g> </svg>