Why not? The cost you pay is proportional with your transaction size in bytes, not the amount of bitcoins you're sending. So it depends on how many inputs and outputs you're using, not the quantity you're moving.
The cost you pay isn't just dependent on how many bytes you want to send. Each block maxes out at 1MB and there's only 144 blocks a day. If you want your transaction to be confirmed, you have to outbid everyone else who wants their transaction to happen (as long as there's more than 7 transactions / sec). I don't think it is doable to try to do a transaction with a $3 fee, you need something like $20 worth of BTC to get it done within the next block or two, and maybe $10 if you're willing to wait a while[1]
[1] assuming https://estimatefee.com/ is correct. Based on the transactions of some of my friends it seems pretty accureate though